【发布时间】:2011-12-06 17:38:10
【问题描述】:
我有一个这样的模型结构:
class Author(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
class Book(models.Model):
published = models.DateTimeField()
name = models.CharField(max_length=300, unique=True)
authors = models.ForeignKey(Author)
category = models.ForeignKey(Category)
class Category(models.Model):
name = models.CharField(max_length=100)
我想计算每个作者的Books。这很容易,因为我可以做到:Author.objects.values('name').annotate(count=Count('book'))。
我在计算这些时遇到了很多困难:
- 每位作者的唯一类别数。
- 作者在一个类别中所写书籍的平均数量
- (这很难。)作者在某个类别中撰写的第一本书和最后一本书之间的平均持续时间。
我不是 ORM 查询专家,如果我必须解决这个问题,我可能最终会使用很多循环和其他迭代来计算这个,但我知道这不是正确的方法.
(我知道这种情况下的某些事情很奇怪,例如对作者姓名的唯一限制,但这是我发现的最好的例子来说明我的问题。)
对我如何实现这一点有任何帮助吗?
谢谢。
【问题讨论】:
标签: python django django-queryset