Python Django api制作字段列表
我有一个API,它为相同的帖子重复了个字段 虽然评论属于同一标题,但它们被划分为不同的对象。我想让评论成为一个类似于Python Django api制作字段列表,python,django,django-rest-framework,Python,Django,Django Rest Framework,我有一个API,它为相同的帖子重复了个字段 虽然评论属于同一标题,但它们被划分为不同的对象。我想让评论成为一个类似于“评论”的列表:[“hi1”、“hi2”、“hi3”、“hi4”、“ads”]不知道如何实现这一点。单个词典中的所有内容 我的模型 class Post(models.Model): title=models.CharField(max_length=200) description=models.TextField(max_length=10000) p
“评论”的列表:[“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
可以做些什么来列一个清单
非常感谢您提供的任何帮助。请提前感谢,因为评论只对给定的帖子有意义,我建议您放弃评论列表,只需在每篇帖子上添加您想要的评论列表即可。您可以通过更改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
这应该在每个帖子上添加一个评论列表
如果这不是您想要的,请告诉我。您可以摆脱read_only=True。我想这是SerializerMethodField的默认值。@davka…我认为行……数据有问题。append(comment.comments)……我的IDE说它无法查找注释。当您在模型中使用
title=models.ForeignKey(Post)
时,django应该自动添加注释。您的IDE可能不理解django。尝试将模型更改为title=models.ForeignKey(Post,related_name='comments')
。请参阅编辑的带有注释集的我的答案,但我更喜欢使用相关的名称,而不必记住Django是什么uses@davka........thanks谢谢你帮我,伙计……不,这不管用……因为对于评论中的评论:“……评论必须循环什么……你应该声明它是正确的?……我希望你遗漏了什么……”。。。。。。。。