Django выполняет аннотирование, подсчет и сравнение

У меня есть следующая Модель.

class Gallery(BaseModel):
    company = models.ForeignKey(to=Company, on_delete=models.CASCADE)
    image = models.ImageField(
        upload_to=upload_company_image_to,
        validators=[validate_image]
    )

    def __str__(self):
        return f'{self.company.name}'

    

Я хочу разрешить загрузку максимум 5 изображений одной компанией, поэтому я попробовал свой запрос как

def clean(self):
    print(Gallery.objects.values('company').annotate(Count('image')).count())

Я не знаю, как сравнить вышеприведенный запрос с Integer 5. Как мне это сделать?

Вы можете извлечь Company, содержащие более пяти изображений, с помощью:

from django.db.models import Count

Company.objects.alias(
    num_images=Count('gallery')
).filter(num_images__gt=5)

До версии вы можете работать с .annotate(…) [Django-doc]:

from django.db.models import Count

Company.objects.annotate(
    num_images=Count('gallery')
).filter(num_images__gt=5)
Вернуться на верх