124

私もシリアライズしたいプロパティフィールドを含むモデルをシリアライズしようとしています。

models.py:

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    slug = models.AutoSlugField(populate_from='name')

    @property
    def ext_link(self):
        return "/".join([settings.EXT_BASE_URL, self.slug])

serializers.py:

class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ('name', 'ext_link')

関連する URL にアクセスしようとすると、プロパティでシリアライザー例外 (KeyError) が発生しext_linkます。

ext_linkプロパティをシリアル化するにはどうすればよいですか?

4

3 に答える 3

164

これはモデル フィールドではないため、シリアライザー クラスに明示的に追加する必要があります。

class MyModelSerializer(serializers.ModelSerializer):
    ext_link = serializers.Field()

    class Meta:
        model = MyModel
        fields = ('name', 'ext_link')
于 2013-06-12T13:02:57.440 に答える