Author: russellm Date: 2009-06-08 08:35:39 -0500 (Mon, 08 Jun 2009) New Revision: 10955
Added: django/trunk/tests/modeltests/proxy_models/fixtures/ django/trunk/tests/modeltests/proxy_models/fixtures/mypeople.json Modified: django/trunk/django/db/models/base.py django/trunk/tests/modeltests/proxy_models/models.py Log: Fixed #11194 -- Corrected loading of Proxy models from fixtures (and, by extension, save_base(raw=True) for Proxy models). Modified: django/trunk/django/db/models/base.py =================================================================== --- django/trunk/django/db/models/base.py 2009-06-08 13:04:22 UTC (rev 10954) +++ django/trunk/django/db/models/base.py 2009-06-08 13:35:39 UTC (rev 10955) @@ -435,7 +435,9 @@ # That means that we don't try to be smart about saving attributes # that might have come from the parent class - we just save the # attributes we have been given to the class we have been given. - if not raw: + # We also go through this process to defer the save of proxy objects + # to their actual underlying model. + if not raw or meta.proxy: if meta.proxy: org = cls else: Added: django/trunk/tests/modeltests/proxy_models/fixtures/mypeople.json =================================================================== --- django/trunk/tests/modeltests/proxy_models/fixtures/mypeople.json (rev 0) +++ django/trunk/tests/modeltests/proxy_models/fixtures/mypeople.json 2009-06-08 13:35:39 UTC (rev 10955) @@ -0,0 +1,9 @@ +[ + { + "pk": 100, + "model": "proxy_models.myperson", + "fields": { + "name": "Elvis Presley" + } + } +] \ No newline at end of file Modified: django/trunk/tests/modeltests/proxy_models/models.py =================================================================== --- django/trunk/tests/modeltests/proxy_models/models.py 2009-06-08 13:04:22 UTC (rev 10954) +++ django/trunk/tests/modeltests/proxy_models/models.py 2009-06-08 13:35:39 UTC (rev 10955) @@ -286,6 +286,13 @@ MyPersonProxy pre save MyPersonProxy post save +>>> signals.pre_save.disconnect(h1, sender=MyPerson) +>>> signals.post_save.disconnect(h2, sender=MyPerson) +>>> signals.pre_save.disconnect(h3, sender=Person) +>>> signals.post_save.disconnect(h4, sender=Person) +>>> signals.pre_save.disconnect(h5, sender=MyPersonProxy) +>>> signals.post_save.disconnect(h6, sender=MyPersonProxy) + # A proxy has the same content type as the model it is proxying for (at the # storage level, it is meant to be essentially indistinguishable). >>> ctype = ContentType.objects.get_for_model @@ -354,4 +361,11 @@ # Select related + filter on a related proxy of proxy field >>> ProxyImprovement.objects.select_related().get(associated_bug__summary__icontains='fix') <ProxyImprovement: ProxyImprovement:improve that> + +Proxy models can be loaded from fixtures (Regression for #11194) +>>> from django.core import management +>>> management.call_command('loaddata', 'mypeople.json', verbosity=0) +>>> MyPerson.objects.get(pk=100) +<MyPerson: Elvis Presley> + """} --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django updates" group. To post to this group, send email to django-updates@googlegroups.com To unsubscribe from this group, send email to django-updates+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/django-updates?hl=en -~----------~----~----~----~------~----~------~--~---