簡體   English   中英

Django Rest 框架視圖集外鍵計數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM