mirror of
				https://github.com/django/django.git
				synced 2025-10-31 01:25:32 +00:00 
			
		
		
		
	Fixed #12654 - Correctly display ForeignKey fields in read-only scenarios. Thanks, minmax.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@12366 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
		| @@ -6,6 +6,7 @@ class Article(models.Model): | ||||
|     """ | ||||
|     A simple Article model for testing | ||||
|     """ | ||||
|     site = models.ForeignKey('sites.Site', related_name="admin_articles") | ||||
|     title = models.CharField(max_length=100) | ||||
|     title2 = models.CharField(max_length=100, verbose_name="another name") | ||||
|     created = models.DateTimeField() | ||||
|   | ||||
| @@ -1,16 +1,61 @@ | ||||
| from datetime import datetime | ||||
| import unittest | ||||
|  | ||||
| from django.db import models | ||||
|  | ||||
| from django.contrib import admin | ||||
| from django.contrib.admin.util import display_for_field, label_for_field | ||||
| from django.contrib.admin.util import display_for_field, label_for_field, lookup_field | ||||
| from django.contrib.admin.views.main import EMPTY_CHANGELIST_VALUE | ||||
| from django.contrib.sites.models import Site | ||||
| from django.utils.formats import localize | ||||
|  | ||||
| from models import Article | ||||
|  | ||||
|  | ||||
|  | ||||
| class UtilTests(unittest.TestCase): | ||||
|     def test_values_from_lookup_field(self): | ||||
|         """ | ||||
|         Regression test for #12654: lookup_field | ||||
|         """ | ||||
|         SITE_NAME = 'example.com' | ||||
|         TITLE_TEXT = 'Some title' | ||||
|         CREATED_DATE = datetime.min | ||||
|         ADMIN_METHOD = 'admin method' | ||||
|         SIMPLE_FUNCTION = 'function' | ||||
|         INSTANCE_ATTRIBUTE = 'attr' | ||||
|  | ||||
|         class MockModelAdmin(object): | ||||
|             def get_admin_value(self, obj): | ||||
|                 return ADMIN_METHOD | ||||
|  | ||||
|         simple_function = lambda obj: SIMPLE_FUNCTION | ||||
|  | ||||
|         article = Article( | ||||
|             site=Site(domain=SITE_NAME), | ||||
|             title=TITLE_TEXT, | ||||
|             created=CREATED_DATE, | ||||
|         ) | ||||
|         article.non_field = INSTANCE_ATTRIBUTE | ||||
|  | ||||
|         verifications = ( | ||||
|             ('site', SITE_NAME), | ||||
|             ('created', localize(CREATED_DATE)), | ||||
|             ('title', TITLE_TEXT), | ||||
|             ('get_admin_value', ADMIN_METHOD), | ||||
|             (simple_function, SIMPLE_FUNCTION), | ||||
|             ('test_from_model', article.test_from_model()), | ||||
|             ('non_field', INSTANCE_ATTRIBUTE) | ||||
|         ) | ||||
|  | ||||
|         mock_admin = MockModelAdmin() | ||||
|         for name, value in verifications: | ||||
|             field, attr, resolved_value = lookup_field(name, article, mock_admin) | ||||
|  | ||||
|             if field is not None: | ||||
|                 resolved_value = display_for_field(resolved_value, field) | ||||
|  | ||||
|             self.assertEqual(value, resolved_value) | ||||
|  | ||||
|     def test_null_display_for_field(self): | ||||
|         """ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user