From 9cd5201abd24ba2632753029ee1957947cdc32f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Anssi=20K=C3=A4=C3=A4ri=C3=A4inen?= Date: Mon, 14 Jul 2014 14:23:34 +0300 Subject: Fixed #22994 -- regression with generic FK + admin list_view The reason for the regression was that the GenericForeignKey field isn't something meta.get_field_by_name() should return. The reason is that a couple of places in Django expects get_field_by_name() to work this way. It could make sense to return GFKs from get_field_by_name(), but that should likely be done as part of meta refactoring or virtual fields refactoring patches. Thanks to glicerinu@gmail.com for the report and to Tim for working on the issue. --- tests/model_meta/test.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) (limited to 'tests/model_meta') diff --git a/tests/model_meta/test.py b/tests/model_meta/test.py index 89a5575665..8fd0a6bb33 100644 --- a/tests/model_meta/test.py +++ b/tests/model_meta/test.py @@ -1,7 +1,7 @@ from django import test -from django.db.models.fields import related, CharField, Field -from django.contrib.contenttypes.fields import GenericForeignKey +from django.db.models.fields import related, CharField, Field, FieldDoesNotExist +from django.contrib.contenttypes.fields import GenericRelation from .models import ( AbstractPerson, BasePerson, Person, Relating, Relation @@ -650,7 +650,12 @@ class GetFieldByNameTests(OptionsBaseTests): self.assertEqual(field_info[1:], (None, False, True)) self.assertIsInstance(field_info[0], related.RelatedObject) - def test_get_virtual_field(self): - field_info = Person._meta.get_field_by_name('content_object_base') + def test_get_generic_foreign_key(self): + # For historic reasons generic foreign keys aren't available. + with self.assertRaises(FieldDoesNotExist): + Person._meta.get_field_by_name('content_object_base') + + def test_get_generic_relation(self): + field_info = Person._meta.get_field_by_name('generic_relation_base') self.assertEqual(field_info[1:], (None, True, False)) - self.assertIsInstance(field_info[0], GenericForeignKey) + self.assertIsInstance(field_info[0], GenericRelation) -- cgit v1.2.1