1

ImageField逆を通して関連付けられたモデルの の URL にアクセスしようとしていますForeignKey。ドキュメントの例に基づいてさまざまなオプションを試しましたが、うまくいきませんでした。どんな助けでも大歓迎です。


models.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 フレームワーク 2.2 では、リバース リレーションシップを明示的にシリアライザー クラスに含める必要がありました。

クラス BlogSerializer(serializers.ModelSerializer): コメント = 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 に答える