我的API有相同帖子的重复字段数
虽然评论属于同一标题,但它们分为不同的对象。我想让评论成为像"comments": ["hi1","hi2","hi3","hi4","ads"]
这样的列表,不知道如何实现这一目标。一切都在单字典
我的模特
class Post(models.Model):
title=models.CharField(max_length=200)
description=models.TextField(max_length=10000)
pub_date=models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.title
def description_as_list(self):
return self.description.split('\n')
class Comment(models.Model):
title=models.ForeignKey(Post)
comments=models.CharField(max_length=200)
def __unicode__(self):
return '%s' % (self.title)
串行
class CommentSerializer(serializers.ModelSerializer):
id = serializers.CharField(source="title.id", read_only=True)
title = serializers.CharField(source="title.title", read_only=True)
class Meta:
model = Comment
fields = ('id','title','comments')
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ('id','title','description','pub_date')
views.py
class CommentList(generics.ListCreateAPIView):
queryset = Comment.objects.all()
serializer_class = CommentSerializer
class CommentDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Comment.objects.all()
serializer_class = CommentSerializer
如何制作清单呢?
非常感谢任何帮助。谢谢提前
答案 0 :(得分:0)
因为评论只对某个帖子有意义,我建议删除评论列表,而只是在每个帖子上添加评论作为你想要的列表。您可以通过更改PostSerializer轻松完成此操作:
class PostSerializer(serializers.ModelSerializer):
comments = serializers.SerializerMethodField(read_only=True)
class Meta:
model = Post
fields = ('id','title','description','pub_date', 'comments')
def get_comments(self, obj):
comment_list = obj.comment_set.all()
data = []
for comment in comment_list:
data.append(comment.comments)
return data
这应该在每个帖子上添加评论列表。
如果这不是您正在寻找的内容,请告诉我。