ModelSerializer 中的 Django 自定义查询集
Django custom queryset inside ModelSerializer
我有一个 PostSerializer
,它有一个使用 CommentSerializer
的 comments
字段。我想更改此 CommentSerializer
的查询集,以便它不会一次显示所有评论。这是代码
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,但我仍然收到所有评论,而不是前 10 条评论。
尝试改变这个:
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?
我有一个 PostSerializer
,它有一个使用 CommentSerializer
的 comments
字段。我想更改此 CommentSerializer
的查询集,以便它不会一次显示所有评论。这是代码
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,但我仍然收到所有评论,而不是前 10 条评论。
尝试改变这个:
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?