我如何在ModelSerializer中使用注释

时间:2020-06-06 17:57:15

标签: python django django-rest-framework

我有一个FooModelSerializer。我想显示可以通过Model.objects.annotate(c = Count(some_field))显示的某些字段的计数。

因此,如果我像在ModelViewSet中那样如上所述编写queryset,则可以正常工作,但另一个BarModelSerializer包含此FooModelSerializer。由于我没有在BarModelSerializer中编写queryset,因此FooModelSerializer不会显示某些字段的计数。现在,我想在FooModelSerializer调用时显示某些字段的计数。因此,如何在ModelSerializer中覆盖queryset。

我尝试覆盖to_representation(instance)函数,但实例参数不是查询内容,因此无法添加注释。

FooModelSerializer(serializers.ModelSerializer):
    c = serializers.IntegerField()
    class Meta:
        model = Foo
        fields = ('some_field', 'annotate_field', 'c')

BarModelSerializer(serializers.ModelSerializer):
    foo = FooModelSerializer()
    class Meta:
        model = Bar
        fields = ('foo',)


0 个答案:

没有答案