Commit 5e9c5de7 authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

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
parent c006ef57
Loading
Loading
Loading
Loading
+12 −5
Original line number Diff line number Diff line
@@ -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.
        """
        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):