1

我正在尝试ImageField通过反向访问模型上的 url- ForeignKey。我根据文档中的示例尝试了各种可能的选项,但没有运气。任何帮助,将不胜感激。


模型.py

class Car(models.Model):
    name = models.CharField(... )

    @property
        def default_image(self):
            ... ...
            return image # <=== returns from the CarImage model

class CarImage(models.Model):
    car = models.ForeignKey(Car) # <=== no related_name set, but technically we could use carimage_set
    image = models.ImageField(... ...)

serializers.py(尝试)

class CarSerializer(serializers.ModelSerializer):
    ... ...
    image = fields.SerializerMethodField('get_image')

    class Meta:
        mode = Car

    def get_image(self, obj):
        return '%s' % obj.default_image.url

例外

'SortedDictWithMetadata' object has no attribute 'default_image'

4

1 回答 1

0

新的 DRF 2.3 似乎对反向关系很有帮助,并解决了我的问题。

DRF 2.3 公告

例如,在 REST framework 2.2 中,需要在序列化程序类中显式包含反向关系。

类 BlogSerializer(serializers.ModelSerializer): comments = serializers.PrimaryKeyRelatedField(many=True)

class Meta:
    model = Blog
    fields = ('id', 'title', 'created', 'comments')

从 2.3 开始,您可以简单地包含字段名称,并且适当的序列化器字段将自动用于关系。

class BlogSerializer(serializers.ModelSerializer):
   """Don't need to specify the 'comments' field explicitly anymore."""
   class Meta:
        model = Blog
        fields = ('id', 'title', 'created', 'comments')
于 2013-05-12T22:31:40.560 回答