Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django api制作字段列表_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django 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

我有一个API,它为相同的帖子重复了个字段

虽然评论属于同一标题,但它们被划分为不同的对象。我想让评论成为一个类似于
“评论”的列表:[“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谢谢你帮我,伙计……不,这不管用……因为对于评论中的评论:“……评论必须循环什么……你应该声明它是正确的?……我希望你遗漏了什么……”。。。。。。。。