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
-~----------~----~----~----~------~----~------~--~---

Reply via email to