我收到 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/