Commit 031385e4 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Fixed #11194 -- Corrected loading of Proxy models from fixtures (and, by...

Fixed #11194 -- Corrected loading of Proxy models from fixtures (and, by extension, save_base(raw=True) for Proxy models).

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10955 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 81aedbd1
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -435,7 +435,9 @@ class Model(object):
        # 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:
+9 −0
Original line number Diff line number Diff line
[
    {
        "pk": 100,
        "model": "proxy_models.myperson",
        "fields": {
            "name": "Elvis Presley"
        }
    }
]
 No newline at end of file
+14 −0
Original line number Diff line number Diff line
@@ -286,6 +286,13 @@ MyPerson post save
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 @@ True
# 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>

"""}