У меня есть две модели Property
и Image
, связанные внешним ключом, так что у каждого Property
есть несколько экземпляров Image
.Я пытаюсь получить набор запросов всех свойств - список всех полей - и количество изображений, которые имеет каждое свойство.Мне известно, что я мог бы сделать это как два разных запроса, но я не чувствую, что это особенно элегантный подход, и он оказывается немного неэффективным, поскольку эта информация извлекается через XMLHttpRequest.
Моделиопределены следующим образом:
class Property(models.Model):
title = models.CharField('title', max_length=255)
created = models.DateTimeField('created', auto_now_add=True)
modified = models.DateTimeField('modified', auto_now=True)
class Meta:
pass
class Image(models.Model):
prop_id = models.ForeignKey(Property)
image_file = models.ImageField('image file', upload_to='/path/to/image/')
class Meta:
pass
Я следил за ответом, опубликованным здесь: Агрегация Джанго через обратную связь , так как я считаю, что это была похожая проблема, но я обнаружил, что этовозвращает пустой набор запросов.
Спасибо за любую помощь, которую кто-либо может предложить.
РЕДАКТИРОВАТЬ:
Я выполнил запрос:
Property.objects.all().annotate(image_count=Count('image')).order_by('-image_count')
РЕДАКТИРОВАТЬ 2:
После некоторых экспериментов я нашел решение, хотя я почти уверен, что это квалифицируется как ошибка / недокументированная проблема:
Property.objects.all().annotate(Count('image')).order_by('-image__count')
Property.objects.all().annotate(total_images=Count('image')).order_by('-total_images')
Они оба работают, но именование аннотации image_count
не работает.Не углубляясь в источник Django, я не могу по-настоящему размышлять о том, почему это происходит.