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. git-svn-id: http://code.djangoproject.com/svn/django/trunk@9618 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
c006ef5746
commit
5e9c5de78a
|
@ -10,7 +10,7 @@ except NameError:
|
||||||
|
|
||||||
import django.db.models.manager # Imported to register signal handler.
|
import django.db.models.manager # Imported to register signal handler.
|
||||||
from django.core.exceptions import ObjectDoesNotExist, MultipleObjectsReturned, FieldError
|
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.fields.related import OneToOneRel, ManyToOneRel, OneToOneField
|
||||||
from django.db.models.query import delete_objects, Q, CollectedObjects
|
from django.db.models.query import delete_objects, Q, CollectedObjects
|
||||||
from django.db.models.options import Options
|
from django.db.models.options import Options
|
||||||
|
@ -298,12 +298,19 @@ class Model(object):
|
||||||
|
|
||||||
def serializable_value(self, field_name):
|
def serializable_value(self, field_name):
|
||||||
"""
|
"""
|
||||||
Returns the value of the field name for this instance. If the field
|
Returns the value of the field name for this instance. If the field is
|
||||||
is a foreign key, returns the id value, instead of the object.
|
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,
|
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.
|
||||||
"""
|
"""
|
||||||
|
try:
|
||||||
field = self._meta.get_field_by_name(field_name)[0]
|
field = self._meta.get_field_by_name(field_name)[0]
|
||||||
|
except FieldDoesNotExist:
|
||||||
|
return getattr(self, field_name)
|
||||||
return getattr(self, field.attname)
|
return getattr(self, field.attname)
|
||||||
|
|
||||||
def save(self, force_insert=False, force_update=False):
|
def save(self, force_insert=False, force_update=False):
|
||||||
|
|
Loading…
Reference in New Issue