python - 类型错误 : count() takes at least 1 argument (0 given)

标签 python django list django-rest-framework

我收到 TypeError: count() takes at least 1 argument (0 given)

如果有人能找出我哪里做错了,那就太好了。非常感谢您。

class CommentsSerializer(serializers.ModelSerializer):
    comment_count = serializers.SerializerMethodField()
    class Meta:
        model = Comments
        fields = [
            "id", "title", "name", "subject", "comment_count",
        ]

    def get_comment_count(self, obj):
        return obj.subject.count()

最佳答案

您的实现没有意义。我认为您正在尝试计算所有 Comments 对象的数量,但在这里您正在尝试计算主题,可能是字符串或列表。在他们身上,count 是这样工作的:

IN  >> "aaaaa".count('a')
OUT >> 5
IN  >> [1,2,3,4].count(1)
OUT >> 1

现在,要解决您的问题,我们需要了解您想要在此处实现的目标。如果您想统计某个帖子的评论数,那么您可以这样尝试:

如果你有这样的模型:

class Comments(models.Model):
    post = models.ForeignKey(Post)

那么你可以采用这种方法:

def get_comment_count(self, obj):
    return obj.post.comments_set.count()

这是 count()来自 Django 查询集的函数。 obj.post.comments_set 将返回一个查询集(用于反向关系)。如果您定义了 related_name="post_comments"( docs ),那么它将变为 obj.post.post_comments.count()

关于python - 类型错误 : count() takes at least 1 argument (0 given),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63262414/

相关文章:

string - 检查列表中的值是否是字符串的一部分

java - 如何在Java中深度复制双向链表

c# - 从数组创建选择列表

python - 配置 Kivy > y 轴的反转输入

python - 如何使用 openCV 保存帧的感兴趣区域?

Python 应用程序在通过 pip 安装时可以工作,但在直接运行时则不行

django - 在 Django 中序列化 json 中的对象列表

Python 类型注释 : Mark item in tuple as optional

python - 将 html 输入标签保存到 django 模型

django - 在本地主机上运行 Django 服务器