ModelSerializer使用模型属性 [英] ModelSerializer using model property
本文介绍了ModelSerializer使用模型属性的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试序列化一个包含一个我想要序列化的属性字段的模型。
I'm trying to serialize a model containing a property field that I also want to serialize.
models.py:
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:
serializers.py:
class MyModelSerializer(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = ('name', 'ext_link')
相关的URL,我在 ext_link
属性上收到一个序列化程序异常(KeyError)。
When trying to get to the related URL, I'm getting a serializer exception (KeyError) on the ext_link
property.
如何序列化 ext_link
属性?
推荐答案
因为它不是一个模型字段,它需要明确地添加到序列化器类
Because it's not a model field, it needs to be added explicitly to the serializer class
class MyModelSerializer(serializers.ModelSerializer):
ext_link = serializers.Field()
class Meta:
model = MyModel
fields = ('name', 'ext_link')
编辑:在REST框架中添加$ code> fields 只会工作 - 不需要显式添加该字段。
In REST framework 3 adding to fields
will just work - don't need to add the field explicitly.
这篇关于ModelSerializer使用模型属性的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文