![](/img/trans.png)
[英]How to get username of request from ModelViewSet class in Django rest API?
[英]Django : how to make rest api comment with Modelviewset
我尝试使用Django的Modelviewset来实现评论功能,但是出现了问题。
模型 :
class Comment(models.Model):
created = models.DateTimeField(auto_now_add= True)
content = models.CharField(max_length = 255, null = True)
author = models.ForeignKey(User, on_delete= models.CASCADE, null = True)
writer = models.CharField(max_length = 255, null = True)
class Meta:
abstract = True
ordering = ['-id']
class TalkComment(Comment):
title = "talk"
post = models.ForeignKey(Talk, on_delete= models.CASCADE, null = True)
序列化程序:
class TalkCommentSerializer(serializers.ModelSerializer):
class Meta:
model = models.TalkComment
fields = '__all__'
看法 :
class TalkCommentViewset(viewsets.ModelViewSet):
queryset = models.TalkComment.objects.all()
serializer_class = serializers.TalkCommentSerializer
网址:
router.register(r'talk/(?P<id>\d+)/comment', postview.TalkCommentViewset)
/api/talk/2/comment/
我想要的只是从那篇文章中获得评论,但所有评论都来了。
如何从特定帖子中获取特定评论?
你让所有的评论,因为你初始化queryset
返回所有commnents的。 要获得某个特定帖子的评论,您必须更改queryset
。 为此,您必须覆盖get_queryset
方法(因为您需要从请求中获取post_id
参数):
class TalkCommentViewset(viewsets.ModelViewSet):
serializer_class = serializers.TalkCommentSerializer
def get_queryset(self):
post_id = self.kwargs["id"]
queryset = TalkComment.objects.filter(post__id=post_id)
return queryset
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.