'Tag' 对象在 for 循环中没有属性 'count'
'Tag' object has no attribute 'count' in for loop
我正在构建一个 BlogApp,我正在尝试 create a notification
当特定 tag
被使用 10 次时。
所以我在 for loop
中使用 if statement
所以如果 any tag used 10 times then create notification
但是当我尝试 count
然后它显示
'Tag' object has no attribute 'count'
models.py
class Post(models.Model):
post_user = models.ForeignKey(User, on_delete=models.CASCADE)
psot_title = models.CharField(max_length=30)
class Comment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post_of = models.ForeignKey(Post, on_delete=models.CASCADE)
views.py
def page(request):
subquery = Tag.objects.filter(post__post_user=request.user).annotate(
num_name=Count('name')
for que in subquery:
if que.count() > 10:
Notification.objects.create(user=request.user)
context = {'subquery':subquery}
return render(request, 'page.html', context}
我试过什么:-
我也试过 len
喜欢 :-
for que in subquery:
if len(que) > 10:
Notification.objects.create(user=request.user)
但是显示
object of type 'Tag' has no len()
我尝试了很多次删除 count()
和 len()
但它显示
'int' object has no attribute 'name'
如果我在查询中使用 count()
那么它将计入所有标签但我正在尝试检查每个标签。
任何帮助将不胜感激。谢谢
您在查询中使用注释将计数信息添加到 Tag
对象,例如
.annotate(num_name=Count('name')
这会计算 name
的计数,并 使用该值注释 标签对象。要访问给定标签的计数,您需要使用:
tag.num_name
因此,在您的代码中:
for que in subquery:
if que.num_name > 10:
Notification.objects.create(user=request.user)
我正在构建一个 BlogApp,我正在尝试 create a notification
当特定 tag
被使用 10 次时。
所以我在 for loop
中使用 if statement
所以如果 any tag used 10 times then create notification
但是当我尝试 count
然后它显示
'Tag' object has no attribute 'count'
models.py
class Post(models.Model):
post_user = models.ForeignKey(User, on_delete=models.CASCADE)
psot_title = models.CharField(max_length=30)
class Comment(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post_of = models.ForeignKey(Post, on_delete=models.CASCADE)
views.py
def page(request):
subquery = Tag.objects.filter(post__post_user=request.user).annotate(
num_name=Count('name')
for que in subquery:
if que.count() > 10:
Notification.objects.create(user=request.user)
context = {'subquery':subquery}
return render(request, 'page.html', context}
我试过什么:-
我也试过 len
喜欢 :-
for que in subquery:
if len(que) > 10:
Notification.objects.create(user=request.user)
但是显示
object of type 'Tag' has no len()
我尝试了很多次删除 count()
和 len()
但它显示
'int' object has no attribute 'name'
如果我在查询中使用 count()
那么它将计入所有标签但我正在尝试检查每个标签。
任何帮助将不胜感激。谢谢
您在查询中使用注释将计数信息添加到 Tag
对象,例如
.annotate(num_name=Count('name')
这会计算 name
的计数,并 使用该值注释 标签对象。要访问给定标签的计数,您需要使用:
tag.num_name
因此,在您的代码中:
for que in subquery:
if que.num_name > 10:
Notification.objects.create(user=request.user)