Author: jacob
Date: 2008-07-21 20:10:06 -0500 (Mon, 21 Jul 2008)
New Revision: 8033

Modified:
   django/trunk/AUTHORS
   django/trunk/django/db/models/base.py
   django/trunk/django/db/models/fields/related.py
   django/trunk/tests/regressiontests/model_inheritance_regress/models.py
Log:
Fixed #6755: model inheritance now works in the admin. Thanks, sloonz and 
Michael Placentra.


Modified: django/trunk/AUTHORS
===================================================================
--- django/trunk/AUTHORS        2008-07-21 22:13:56 UTC (rev 8032)
+++ django/trunk/AUTHORS        2008-07-22 01:10:06 UTC (rev 8033)
@@ -303,6 +303,7 @@
     [EMAIL PROTECTED]
     [EMAIL PROTECTED]
     Gustavo Picon
+    Michael Placentra II <[EMAIL PROTECTED]>
     Luke Plant <http://lukeplant.me.uk/>
     plisk
     Mihai Preda <[EMAIL PROTECTED]>
@@ -342,6 +343,7 @@
     [EMAIL PROTECTED]
     Jozko Skrablin <[EMAIL PROTECTED]>
     Ben Slavin <[EMAIL PROTECTED]>
+    sloonz <[EMAIL PROTECTED]>
     SmileyChris <[EMAIL PROTECTED]>
     [EMAIL PROTECTED]
     Vsevolod Solovyov

Modified: django/trunk/django/db/models/base.py
===================================================================
--- django/trunk/django/db/models/base.py       2008-07-21 22:13:56 UTC (rev 
8032)
+++ django/trunk/django/db/models/base.py       2008-07-22 01:10:06 UTC (rev 
8033)
@@ -299,6 +299,12 @@
         # attributes we have been given to the class we have been given.
         if not raw:
             for parent, field in meta.parents.items():
+                # At this point, parent's primary key field may be unknown
+                # (for example, from administration form which doesn't fill
+                # this field). If so, fill it.
+                if getattr(self, parent._meta.pk.attname) is None and 
getattr(self, field.attname) is not None:
+                    setattr(self, parent._meta.pk.attname, getattr(self, 
field.attname))
+
                 self.save_base(raw, parent)
                 setattr(self, field.attname, self._get_pk_val(parent._meta))
 

Modified: django/trunk/django/db/models/fields/related.py
===================================================================
--- django/trunk/django/db/models/fields/related.py     2008-07-21 22:13:56 UTC 
(rev 8032)
+++ django/trunk/django/db/models/fields/related.py     2008-07-22 01:10:06 UTC 
(rev 8033)
@@ -706,6 +706,7 @@
     """
     def __init__(self, to, to_field=None, **kwargs):
         kwargs['unique'] = True
+        kwargs['editable'] = False
         if 'num_in_admin' not in kwargs:
             kwargs['num_in_admin'] = 0
         super(OneToOneField, self).__init__(to, to_field, OneToOneRel, 
**kwargs)

Modified: django/trunk/tests/regressiontests/model_inheritance_regress/models.py
===================================================================
--- django/trunk/tests/regressiontests/model_inheritance_regress/models.py      
2008-07-21 22:13:56 UTC (rev 8032)
+++ django/trunk/tests/regressiontests/model_inheritance_regress/models.py      
2008-07-22 01:10:06 UTC (rev 8033)
@@ -159,4 +159,19 @@
 ...
 DoesNotExist: ItalianRestaurant matching query does not exist.
 
+# Regression test for #6755
+>>> r = Restaurant(serves_pizza=False)
+>>> r.save()
+>>> r.id
+3
+>>> r.place_ptr_id
+3
+>>> r = Restaurant(place_ptr_id=3, serves_pizza=True)
+>>> r.save()
+>>> r.id
+3
+>>> r.place_ptr_id
+3
+
+
 """}


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to