我收到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()
您可以检查函数说明here
它统计对象在列表中的出现次数,因此需要将对象作为参数传递给count()函数,并将其应用于列表
此外,如果您提供一个示例程序,说明您得到了错误,则会更好
您的实现没有意义。我认为您正在尝试获取所有
Comments
对象的计数,但这里您正在尝试计数subject,可能是字符串或列表。在他们身上,count的工作原理如下:现在,为了解决您的问题,我们需要了解您希望在这里实现什么。如果您想获得某个帖子的评论数,可以这样尝试:
如果您有这样的模型:
然后您可以采用这种方法:
这是Django queryset中的^{} 函数。和
obj.post.comments_set
将返回一个queryset(用于具有反向关系)。如果您定义了related_name="post_comments"
(docs),那么它将变成obj.post.post_comments.count()
count()
只需要一个参数,并返回列表中所提供参数的实例数如果只想计算列表中的元素数,请使用:
相关问题 更多 >
编程相关推荐