我想序列化一个模型并包含额外的字段。我想使用此序列化程序来获取列表,详细信息和创建视图。在serialializer中,我使用create,update和get_field方法来定制逻辑。
class ExampleSerializer(serializers.ModelSerializer):
field = serializers.CharField()
class Meta:
model = Example
fields = ("field", ...)
当我添加新对象时,一切都是正确的(我可以验证自定义字段数据),但是当我得到对象时,“字段”在响应中不存在。
编辑:我想在序列化程序类上设置自定义方法来获取字段。这对我来说是更好的逻辑解决方案,然后在模型上设置自定义方法。
为什么会那样?是否存在更好的解决方案(我不想使用SerializerMethodField)?
答案 0 :(得分:1)
该字段不是模型的一部分,因为它出现了错误。您可以使该字段为write_only = True.Suppose字段为额外字段。
class ExampleSerializer(serializers.ModelSerializer):
field = serializers.CharField(write_only=true)
class Meta:
model = Example
fields = ("field", ...)
或者您可以将字段交叉池的源值赋予哪个字段。
我们可以使用该字段名称定义属性方法。您可以在序列化程序中包含该字段,只读取您可以为该
返回的任何数据class Example(model.MOdels):
@property
def field(self):
return #whatever you want to return
您可以使用serilizermethod字段。
class ExampleSerializer(serializers.ModelSerializer):
field = serializers.serializerMethod()
class Meta:
model = Example
fields = ("field", ...)
def get_field(self, obj):
return obj.data