【问题标题】:Django custom queryset inside ModelSerializerModelSerializer 中的 Django 自定义查询集
【发布时间】:2017-08-25 03:42:26
【问题描述】:

我有一个PostSerializer,它有一个使用CommentSerializercomments 字段。我想更改此 CommentSerializer 的查询集,以便它不会一次显示所有 cmets。这是代码

class PostSerializer(serializers.ModelSerializer):
    comments = SimplifiedCommentSerializer(
        many=True,
        required=False,
    )

    class Meta:
        model = Post
        fields = ('comments')

class SimplifiedCommentSerializer(serializers.ModelSerializer):
    content = serializers.TextField()

    # this function doesn't seem to work
    def get_queryset(self):
        return Comment.objects.all()[:10]

    class Meta:
        model = Comment
        fields = ('content')

我尝试在 SimplifiedCommentSerializer 中使用 get_queryset,但我仍然得到所有 cmets 而不是前 10 个。

【问题讨论】:

  • 什么不起作用?你得到所有的 cmets 而不是第一个?
  • 是的,我仍然得到所有的 cmets 而不是第一个

标签: django django-serializer


【解决方案1】:

尝试改变这一点:

def get_queryset(self):
    return Comment.objects.all()[:10]

进入:

queryset = Comment.objects.all()[:10]

编辑:

创建一个视图集并将上面的行外包:

class CommentViewSet(viewsets.ModelViewSet):
    queryset = Comment.objects.all()[:10]
    serializer_class = SimplifiedCommentSerializer

请看这个问题和答案: django REST framework - limited queryset for nested ModelSerializer?

【讨论】:

  • 我仍然得到了所有的 cmets
猜你喜欢
  • 1970-01-01
  • 2011-11-29
  • 2014-10-08
  • 2010-10-14
  • 1970-01-01
  • 2016-09-11
  • 2016-08-28
  • 1970-01-01
  • 2011-03-11
相关资源
最近更新 更多