diff options
| author | Jacob Kaplan-Moss <jacob@jacobian.org> | 2008-07-22 01:10:06 +0000 |
|---|---|---|
| committer | Jacob Kaplan-Moss <jacob@jacobian.org> | 2008-07-22 01:10:06 +0000 |
| commit | 863f4eb1d7cf96013207986c7f848defde16210d (patch) | |
| tree | f81f223b1ff9d159492864dc36aafd7356129001 | |
| parent | c236874c48fff6509027ee08135eaf3171023917 (diff) | |
Fixed #6755: model inheritance now works in the admin. Thanks, sloonz and Michael Placentra.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8033 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | AUTHORS | 2 | ||||
| -rw-r--r-- | django/db/models/base.py | 6 | ||||
| -rw-r--r-- | django/db/models/fields/related.py | 1 | ||||
| -rw-r--r-- | tests/regressiontests/model_inheritance_regress/models.py | 15 |
4 files changed, 24 insertions, 0 deletions
@@ -303,6 +303,7 @@ answer newbie questions, and generally made Django that much better: phil@produxion.net phil.h.smith@gmail.com Gustavo Picon + Michael Placentra II <someone@michaelplacentra2.net> Luke Plant <http://lukeplant.me.uk/> plisk Mihai Preda <mihai_preda@yahoo.com> @@ -342,6 +343,7 @@ answer newbie questions, and generally made Django that much better: jason.sidabras@gmail.com Jozko Skrablin <jozko.skrablin@gmail.com> Ben Slavin <benjamin.slavin@gmail.com> + sloonz <simon.lipp@insa-lyon.fr> SmileyChris <smileychris@gmail.com> smurf@smurf.noris.de Vsevolod Solovyov diff --git a/django/db/models/base.py b/django/db/models/base.py index 51cefcf77b..36dd5ee5e6 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -299,6 +299,12 @@ class Model(object): # 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)) diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index c76c87ec74..febe9884ed 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -706,6 +706,7 @@ class OneToOneField(ForeignKey): """ 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) diff --git a/tests/regressiontests/model_inheritance_regress/models.py b/tests/regressiontests/model_inheritance_regress/models.py index b78b493e15..3f4fa04b77 100644 --- a/tests/regressiontests/model_inheritance_regress/models.py +++ b/tests/regressiontests/model_inheritance_regress/models.py @@ -159,4 +159,19 @@ Traceback (most recent call last): ... 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 + + """} |
