Скажем, у меня есть модель Product
с продуктами в витрине магазина и таблица ProductImages
с изображениями продукта, которые могут иметь ноль или более изображений. Здесь упрощенный пример:
class Product(models.Model):
product_name = models.CharField(max_length=255)
# ...
class ProductImage(models.Model):
product = models.ForeignKey(Product, related_name='images')
image_file = models.CharField(max_length=255)
# ...
При отображении результатов поиска продуктов я хочу определить приоритеты продуктов, у которых есть связанные с ними изображения. Я могу легко получить количество изображений:
from django.db.models import Count
Product.objects.annotate(image_count=Count('images'))
Но это не то, что я хочу. Я хотел бы аннотировать его логическим полем have_images
, указывая, есть ли у продукта одно или несколько изображений, чтобы я мог сортировать по нему:
Product.objects.annotate(have_images=(?????)).order_by('-have_images', 'product_name')
Как я могу это сделать? Спасибо!