Объект 'Tag' не имеет атрибута 'count' в цикле for loop
Я создаю BlogApp и пытаюсь create a notification
когда определенный tag
используется 10 раз.
Я использую if statement
в for loop
так что если any tag used 10 times then create notification
Но когда я пытаюсь count
то он показывает
У объекта 'Tag' нет атрибута '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)
Но он показал
у объекта типа 'Tag' нет len()
Я пробовал много раз, удаляя count()
и len()
, но он показал
у объекта 'int' нет атрибута '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)