我有兩個模型Property
和Image
,通過外鍵相關,使得每個Property
有多個實例Image
。我正在嘗試檢索所有屬性的查詢集 - 列出所有字段 - 以及每個屬性具有的圖像數量。我知道我可以做這兩個不同的查詢,但我不覺得這是一個特別優雅的方法,並且由於通過XMLHttpRequest獲取這些信息,所以證明它有點低效。註釋通過反向關係Django查詢
這些模型定義如下:
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
我按照張貼在這裏的答案:Django Aggregation Across Reverse Relationship,因爲我相信這是一個類似的問題,但我發現,這將返回一個空的查詢集。
感謝任何人可以提供的幫助。
編輯:
我跑的查詢是:
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的來源,我無法真正推測爲什麼會發生這種情況。
我的答案(或另一個)從這個問題應該工作。你能發佈你運行的確切代碼嗎? – 2010-07-30 09:01:22