【发布时间】:2021-11-01 13:15:18
【问题描述】:
class Author(models.Model):
first_name = models.CharField(max_length=10)
last_name = models.CharField(max_length=10, null=True, blank=True)
def __str__(self):
return f'{self.first_name} {self.last_name}'
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.ManyToManyField(Author, related_name='book_author')
price = models.SmallIntegerField()
def __str__(self):
return self.name
你好! 我一直在尝试根据作者对上述模型中的书籍成本进行分组(因为一本书可以有多个作者)。我知道它可以使用 groupby 来完成,但我不知道如何在 Django ORM 中查询它,我尝试搜索网络但没有得到相关的解决方案。
我想做的是, 例如,如果一本书“Wonder”有两个作者“A”和“B”,并且他们也与其他书一起写作, 就像'A'和'B'的'Wonder'和 “A”和“B”的“新”
所以,我想查询书籍的作者组合+作者所写的所有书籍的总成本字段(多对多作者组合)。
如果有办法,请帮忙,对不好的解释表示歉意。
【问题讨论】:
-
我怀疑在 django 中是否有比这篇文章更好的分组介绍 hakibenita.com/django-group-by-sql
-
您能否添加一个适当的示例来演示,存在什么以及您期望什么答案,因为您提供的示例很难可视化和理解您的问题?
-
当然,我想要的是,假设...一本名为 'Wonder' 的书由 'A' 和 'B' 写,另一本名为 'New' 的书由相同的 'A' 和 ' B',所以当我们得到所有书籍时,我希望在每个查询集中有一个名为“totalCost”的属性(它可以是任何东西),这给了我同一作者组合所写书籍价格的总和。
-
那么您是提供作者组合
A和B作为输入还是书籍Wonder作为输入? -
不,我没有提供组合,我使用多对多关系链接了作者 A 和 B。
标签: python django group-by django-queryset django-orm