Объект '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)
Вернуться на верх