我想序列化一个模型,但想包括一个额外的字段,需要在模型实例上做一些数据库查询要序列化:
class FooSerializer(serializers.ModelSerializer):
my_field = ... # result of some database queries on the input Foo object
class Meta:
model = Foo
fields = ('id', 'name', 'myfield')
正确的做法是什么?我看到你可以传入额外的“context”;到序列化器,是在上下文字典中传递附加字段的正确答案吗?
使用这种方法,获取我需要的字段的逻辑将不包含在序列化器定义中,这是理想的,因为每个序列化实例都需要my_field
。在DRF序列化器文档的其他地方说额外字段可以对应于模型上的任何属性或可调用项。是“额外字段”;我在说什么?
我是否应该在Foo
的模型定义中定义一个返回my_field
值的函数,并在序列化器中将my_field连接到该可调用对象?它看起来像什么?
如果有必要,我很乐意澄清问题。