我试图从序列化内部的特定模型中获得总数。
"results": [
{
"event_id": 24,
"unique_visitors": 1,
"returned_visitors": 2
},
]我在unique_visitors和returned_visitors中检索的两个值来自另一个模块。我在serializer.py做的事
unique_visitors = EventCounter.objects.filter(is_unique=True).filter(event_id=24).count()
returned_visitors = EventCounter.objects.filter(is_unique=False).filter(event_id=24).count()
def get_unique_visitors(self, obj):
return self.unique_visitors
def get_returned_visitors(self, obj):
return self.returned_visitors我想要做的是在filter(event_id=24)中自动拥有当前对象的id。
你能帮帮我吗?
发布于 2022-03-03 04:03:37
因此,要达到预期的结果,您必须使用SerializerMethodField()。
这是一个只读字段。它通过调用附加到的序列化程序类上的方法来获得它的值。
例如
from rest_framework import serializers
...
unique_visitors = serializers.SerializerMethodField()
returned_visitors = serializers.SerializerMethodField()
...
def get_unique_visitors(self, obj):
unique_visitors = EventCounter.objects.filter(is_unique=True)\
.filter(event_id=24).count()
return unique_visitors
def get_returned_visitors(self, obj):
returned_visitors = EventCounter.objects.filter(is_unique=False)\
.filter(event_id=24).count()
return returned_visitorsSerializerMethodField还接受一个名为method_name的可选参数,您可以添加它以更改附加字段的方法的名称。如果不包括,则默认为get_<field_name>。
有关更多信息,请查看文档。
https://stackoverflow.com/questions/71322428
复制相似问题