Kaydet (Commit) bad5f262 authored tarafından Anssi Kääriäinen's avatar Anssi Kääriäinen Kaydeden (comit) Tim Graham

Fixed #24328 -- cleaned up Options._get_fields() implementation

üst bed504d7
...@@ -239,7 +239,8 @@ class ModelBase(type): ...@@ -239,7 +239,8 @@ class ModelBase(type):
else: else:
# .. and abstract ones. # .. and abstract ones.
for field in parent_fields: for field in parent_fields:
new_class.add_to_class(field.name, copy.deepcopy(field)) new_field = copy.deepcopy(field)
new_class.add_to_class(field.name, new_field)
# Pass any non-abstract parent classes onto child. # Pass any non-abstract parent classes onto child.
new_class._meta.parents.update(base._meta.parents) new_class._meta.parents.update(base._meta.parents)
......
This diff is collapsed.
...@@ -228,11 +228,9 @@ class RelationTreeTests(TestCase): ...@@ -228,11 +228,9 @@ class RelationTreeTests(TestCase):
sorted([field.related_query_name() for field in Relation._meta._relation_tree sorted([field.related_query_name() for field in Relation._meta._relation_tree
if not field.rel.field.rel.is_hidden()]), if not field.rel.field.rel.is_hidden()]),
sorted([ sorted([
'fk_abstract_rel', 'fk_abstract_rel', 'fk_abstract_rel', 'fk_base_rel', 'fk_base_rel', 'fk_abstract_rel', 'fk_base_rel', 'fk_concrete_rel', 'fo_abstract_rel',
'fk_base_rel', 'fk_concrete_rel', 'fk_concrete_rel', 'fo_abstract_rel', 'fo_abstract_rel', 'fo_base_rel', 'fo_concrete_rel', 'm2m_abstract_rel',
'fo_abstract_rel', 'fo_base_rel', 'fo_base_rel', 'fo_base_rel', 'fo_concrete_rel', 'm2m_base_rel', 'm2m_concrete_rel'
'fo_concrete_rel', 'm2m_abstract_rel', 'm2m_abstract_rel', 'm2m_abstract_rel',
'm2m_base_rel', 'm2m_base_rel', 'm2m_base_rel', 'm2m_concrete_rel', 'm2m_concrete_rel',
]) ])
) )
# Testing hidden related objects # Testing hidden related objects
...@@ -243,9 +241,8 @@ class RelationTreeTests(TestCase): ...@@ -243,9 +241,8 @@ class RelationTreeTests(TestCase):
'BasePerson_following_base+', 'BasePerson_following_base+', 'BasePerson_friends_abstract+', 'BasePerson_following_base+', 'BasePerson_following_base+', 'BasePerson_friends_abstract+',
'BasePerson_friends_abstract+', 'BasePerson_friends_base+', 'BasePerson_friends_base+', 'BasePerson_friends_abstract+', 'BasePerson_friends_base+', 'BasePerson_friends_base+',
'BasePerson_m2m_abstract+', 'BasePerson_m2m_base+', 'Relating_basepeople+', 'BasePerson_m2m_abstract+', 'BasePerson_m2m_base+', 'Relating_basepeople+',
'Relating_basepeople_hidden+', 'followers_abstract', 'followers_abstract', 'followers_abstract', 'Relating_basepeople_hidden+', 'followers_abstract',
'followers_base', 'followers_base', 'followers_base', 'friends_abstract_rel_+', 'friends_abstract_rel_+', 'followers_base', 'friends_abstract_rel_+', 'friends_base_rel_+',
'friends_abstract_rel_+', 'friends_base_rel_+', 'friends_base_rel_+', 'friends_base_rel_+', 'person',
'person', 'relating_basepeople', 'relating_baseperson', 'person', 'relating_basepeople', 'relating_baseperson',
]) ])
) )
......
...@@ -158,7 +158,7 @@ class ProxyTrackerUser(TrackerUser): ...@@ -158,7 +158,7 @@ class ProxyTrackerUser(TrackerUser):
@python_2_unicode_compatible @python_2_unicode_compatible
class Issue(models.Model): class Issue(models.Model):
summary = models.CharField(max_length=255) summary = models.CharField(max_length=255)
assignee = models.ForeignKey(TrackerUser) assignee = models.ForeignKey(ProxyTrackerUser)
def __str__(self): def __str__(self):
return ':'.join((self.__class__.__name__, self.summary,)) return ':'.join((self.__class__.__name__, self.summary,))
......
...@@ -3,7 +3,7 @@ from __future__ import unicode_literals ...@@ -3,7 +3,7 @@ from __future__ import unicode_literals
from django.apps import apps from django.apps import apps
from django.contrib import admin from django.contrib import admin
from django.contrib.contenttypes.models import ContentType from django.contrib.contenttypes.models import ContentType
from django.core import checks, management from django.core import checks, exceptions, management
from django.core.urlresolvers import reverse from django.core.urlresolvers import reverse
from django.db import DEFAULT_DB_ALIAS, models from django.db import DEFAULT_DB_ALIAS, models
from django.db.models import signals from django.db.models import signals
...@@ -328,8 +328,18 @@ class ProxyModelTests(TestCase): ...@@ -328,8 +328,18 @@ class ProxyModelTests(TestCase):
resp = StateProxy.objects.select_related().get(name='New South Wales') resp = StateProxy.objects.select_related().get(name='New South Wales')
self.assertEqual(resp.name, 'New South Wales') self.assertEqual(resp.name, 'New South Wales')
def test_filter_proxy_relation_reverse(self):
tu = TrackerUser.objects.create(
name='Contributor', status='contrib')
with self.assertRaises(exceptions.FieldError):
TrackerUser.objects.filter(issue=None),
self.assertQuerysetEqual(
ProxyTrackerUser.objects.filter(issue=None),
[tu], lambda x: x
)
def test_proxy_bug(self): def test_proxy_bug(self):
contributor = TrackerUser.objects.create(name='Contributor', contributor = ProxyTrackerUser.objects.create(name='Contributor',
status='contrib') status='contrib')
someone = BaseUser.objects.create(name='Someone') someone = BaseUser.objects.create(name='Someone')
Bug.objects.create(summary='fix this', version='1.1beta', Bug.objects.create(summary='fix this', version='1.1beta',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment