diff options
| author | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2008-12-09 06:51:23 +0000 |
|---|---|---|
| committer | Malcolm Tredinnick <malcolm.tredinnick@gmail.com> | 2008-12-09 06:51:23 +0000 |
| commit | 86115228981b1a480a3200d2a4e30c000ac08acb (patch) | |
| tree | bf5fbb8bdf15fd808063dc4980d8fa476ef78cfc | |
| parent | 3988cb2d2717a12f274370b864ffa7c8efe0e954 (diff) | |
[1.0.X] Fixed #9775 -- Fixed an oversight from r9601 and allow direct attribute
lookup in the serializable_value() method. This means that abstract
parents that are multi-table children of other models(no, really!!) now
work again.
Backport of r9618 from trunk.
git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@9619 bcc190cf-cafb-0310-a4f2-bffc1f526a37
| -rw-r--r-- | django/db/models/base.py | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/django/db/models/base.py b/django/db/models/base.py index a561b80979..ad7c97359e 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -10,7 +10,7 @@ except NameError: import django.db.models.manager # Imported to register signal handler. from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned, FieldError -from django.db.models.fields import AutoField +from django.db.models.fields import AutoField, FieldDoesNotExist from django.db.models.fields.related import OneToOneRel, ManyToOneRel, OneToOneField from django.db.models.query import delete_objects, Q, CollectedObjects from django.db.models.options import Options @@ -298,12 +298,19 @@ class Model(object): def serializable_value(self, field_name): """ - Returns the value of the field name for this instance. If the field - is a foreign key, returns the id value, instead of the object. + Returns the value of the field name for this instance. If the field is + a foreign key, returns the id value, instead of the object. If there's + no Field object with this name on the model, the model attribute's + value is returned directly. + Used to serialize a field's value (in the serializer, or form output, - for example). + for example). Normally, you would just access the attribute directly + and not use this method. """ - field = self._meta.get_field_by_name(field_name)[0] + try: + field = self._meta.get_field_by_name(field_name)[0] + except FieldDoesNotExist: + return getattr(self, field_name) return getattr(self, field.attname) def save(self, force_insert=False, force_update=False): |
