[英]Django Rest Framework Viewsets Count Foreign Key
我正在嘗試向我的模型視圖集中添加一個附加字段。 例如,如果我有 1 個父對象和 3 個子對象,我希望父視圖集 json 看起來像。 為了獲得孩子的數量,我可以做類似children = Child.objects.filter(parent.id=).count()
的事情,但我不確定如何在視圖集中獲取父 ID。
[
{
"id": 1,
"name": "parent1",
"child_count": 3
}
]
模型.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)
視圖.py
class ParentViewSet(viewsets.ModelViewSet):
serializer_class = ParentSerializer
children = Child.objects.filter() # ??
def get_queryset(self):
queryset = Parent.objects.all().annotate(child_count=) # ??
return queryset
序列化程序.py
class ParentSerializer(serializers.ModelSerializer):
child_count = serializers.IntegerField()
class Meta:
model = Parent
fields = ["id", "name", "child_count"]
可能有一種獲取此計數的簡寫方法 - 但是 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()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.