如果我有一個模型書定義爲:Django的ORM:彙總註解引發DatabaseError
class Book(models.Model):
name = models.CharField(max_length=300)
pages = models.IntegerField()
price = models.DecimalField(max_digits=10, decimal_places=2)
rating = models.FloatField()
pubdate = models.DateField()
,我運行查詢:
Book.objects.values('rating').annotate(books_per_rating=Count('id')).aggregate(Max('books_per_rating'))
我得到一個DatabaseError。根據https://docs.djangoproject.com/en/1.5/topics/db/aggregation/#aggregating-annotations,Django支持聚合註釋。但是在鏈接本身給出的示例中,它們通過QuerySet進行了註釋,該查詢集依次返回QuerySet(而不是ValuesQuerySet),因此聚合方法成功運行。但在我的示例聚合ValuesQuerySet引發DatabaseError。
這是Django中的錯誤嗎?因爲如果Django不支持聚合ValuesQuerySet那麼它應該在Django級別引發異常(而不是DatabaseError)。
更新:
此bug已在這裏解決:https://code.djangoproject.com/ticket/20782
也有趣的是,如果這樣做: 'Book.objects.values('rating')。aggregate(Max('rating'))' 它返回一個空的字典而不執行任何數據庫查詢! –