我正在尝试向我的模型视图集中添加一个额外的字段。例如,如果我有一个父对象和三个子对象,我希望父视图集json看起来像这样。为了获得孩子的数量,我可以执行类似children = Child.objects.filter(parent.id=).count()的操作,但我不确定如何在视图集中获取父id。
[
{
"id": 1,
"name": "parent1",
"child_count": 3
}
]models.py
class Parent(models.Model):
name = models.CharField(max_length=100)
class Child(models.Model):
name = models.CharField(max_length=100)
parent = models.ForeignKey("Parent", on_delete=models.CASCADE)views.py
class ParentViewSet(viewsets.ModelViewSet):
serializer_class = ParentSerializer
children = Child.objects.filter() # ??
def get_queryset(self):
queryset = Parent.objects.all().annotate(child_count=) # ??
return querysetserializers.py
class ParentSerializer(serializers.ModelSerializer):
child_count = serializers.IntegerField()
class Meta:
model = Parent
fields = ["id", "name", "child_count"]发布于 2021-09-27 18:54:46
可能有一种快捷的方法来获得这个计数-但是SerializerMethodField是非常简单的。
class ParentSerializer(serializers.ModelSerializer):
child_count = serializers.SerializerMethodField()
class Meta:
model = Parent
fields = ["id", "name", "child_count"]
def get_child_count(self):
return Child.objects.filter(parent=self.get_object()).count()https://stackoverflow.com/questions/69351861
复制相似问题