我想序列化一个模型,但想要包括一个额外的字段,该字段需要在要序列化的模型实例上执行一些数据库查找:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
做这件事的正确方式是什么?我看到you can pass in extra "context"是给序列化程序的,在上下文字典中传递附加字段是正确的答案吗?
使用这种方法,获取所需字段的逻辑将不会与序列化程序定义自包含,这是理想的,因 for each 序列化实例都需要my_field
.在DRF serializers文档的其他地方,它显示了says个"额外字段可以对应于模型上的任何属性或可调用属性".我说的是"额外领域"吗?
我应该在Foo
的模型定义中定义一个返回my_field
值的函数,并在序列化程序中将我的_字段连接到该可调用项吗?那是什么样子的?
如果需要的话,我很乐意澄清这个问题.