首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django Rest框架视图集计数外键

Django Rest框架视图集计数外键
EN

Stack Overflow用户
提问于 2021-09-27 18:48:39
回答 1查看 25关注 0票数 0

我正在尝试向我的模型视图集中添加一个额外的字段。例如,如果我有一个父对象和三个子对象,我希望父视图集json看起来像这样。为了获得孩子的数量,我可以执行类似children = Child.objects.filter(parent.id=).count()的操作,但我不确定如何在视图集中获取父id。

代码语言:javascript
复制
[
    {
        "id": 1,
        "name": "parent1",
        "child_count": 3
    }
]

models.py

代码语言:javascript
复制
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

代码语言:javascript
复制
class ParentViewSet(viewsets.ModelViewSet):
    serializer_class = ParentSerializer

    
    children = Child.objects.filter() # ??

    def get_queryset(self):
        queryset = Parent.objects.all().annotate(child_count=) # ??

        return queryset

serializers.py

代码语言:javascript
复制
class ParentSerializer(serializers.ModelSerializer):
    
    child_count = serializers.IntegerField()

    class Meta:
        model = Parent
        fields = ["id", "name", "child_count"]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-27 18:54:46

可能有一种快捷的方法来获得这个计数-但是SerializerMethodField是非常简单的。

代码语言:javascript
复制
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()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69351861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档