gpt4 book ai didi

python - Django 中的复杂分组和平均值

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:27 25 4
gpt4 key购买 nike

我有一个这样的模型结构:

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)

我想统计每个作者的书籍。这很容易,因为我可以这样做:Author.objects.values('name').annotate(count=Count('book'))

我在计算这些时遇到了很多困难:

  • 每位作者的独特类别数。
  • 作者在某个类别中撰写的平均书籍数量
  • (这很难。)作者在某个类别中撰写的第一本书和最后一本书之间的平均持续时间。

我不是 ORM 查询大师,如果我必须解决这个问题,我可能最终会使用很多循环和其他迭代来计算这个,但我知道这不是正确的方法.

(我知道这种情况下的某些事情很奇怪,例如对作者姓名的唯一约束,但这是我找到的最好的例子来说明我的问题。)

对我如何完成这个有什么帮助吗?

谢谢。

最佳答案

哎呀,太难了。

因为这些不是你需要经常刷新的信息,我建议你在 Author 模型中添加 3 个字段,然后在 Book 上附加一个 post_save 信号> 模型:每次创建一本书时,您只需计算这些值并将它们存储在 Author 模型中。

然后您将能够轻松地过滤它们,显示速度非常快,并且无论如何保存时计算它的时间几乎不会被注意到。

关于python - Django 中的复杂分组和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8404236/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com