Commit d662ef55 authored by Malcolm Tredinnick's avatar Malcolm Tredinnick
Browse files

The first step in fixing a group of problems related to outputting a proper

"value" for a field that is a relation to another model.

This part adds the utility method on Model that should help in general.Also
cleans up the slightly ugly mess from r8957.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@9601 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent fa7aa725
Loading
Loading
Loading
Loading
+10 −0
Original line number Diff line number Diff line
@@ -296,6 +296,16 @@ class Model(object):

    pk = property(_get_pk_val, _set_pk_val)

    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.
        Used to serialize a field's value (in the serializer, or form output,
        for example).
        """
        field = self._meta.get_field_by_name(field_name)[0]
        return getattr(self, field.attname)

    def save(self, force_insert=False, force_update=False):
        """
        Saves the current instance. Override this in a subclass if you want to
+1 −0
Original line number Diff line number Diff line
@@ -448,3 +448,4 @@ class Options(object):
            #        objects.append(opts)
            self._ordered_objects = objects
        return self._ordered_objects
+1 −7
Original line number Diff line number Diff line
@@ -624,13 +624,7 @@ class ModelChoiceIterator(object):

    def choice(self, obj):
        if self.field.to_field_name:
            # FIXME: The try..except shouldn't be necessary here. But this is
            # going in just before 1.0, so I want to be careful. Will check it
            # out later.
            try:
                key = getattr(obj, self.field.to_field_name).pk
            except AttributeError:
                key = getattr(obj, self.field.to_field_name)
            key = obj.serializable_value(self.field.to_field_name)
        else:
            key = obj.pk
        return (key, self.field.label_from_instance(obj))