django 查询

2019-06-11 10:43:43 +08:00
 kingofvir

模型

class Author(models.Model):
    """ 作者"""
    name = models.CharField('名字', max_length=64)


class Shop(models.Model):
    """ 书店对某个作者的销售情况"""
    author = models.ForeignKey(Author,on_delete=)
    sales_count =  models.CharField('销售情况', max_length=512, default='')

如和查询 Author,并且能统计该作者在所有书点点销售总数?

2946 次点击
所在节点    Django
5 条回复
tristankuo
2019-06-11 11:19:08 +08:00
sales_count 不应该是 int 吗?

from django.db.models import Sum
Author.objects.prefetch_related('shops').values('name').annotate(sum_sales_count=Sum('shops__sales_count'))
kingofvir
2019-06-11 11:29:04 +08:00
在 Author 每指明 MTM 字段 能使用 prefetch related('shops')
kingofvir
2019-06-11 11:30:03 +08:00
@kingofvir 在 Author 没指明 MTM 字段 能使用 prefetch related('shops')
kingofvir
2019-06-11 11:36:33 +08:00
我用了这个
```
Shop.objects.values('author__pk').annotate(
all_sales_count=Sum('sales_count', distinct=True),
name=F('author__name')
)
```
tristankuo
2019-06-11 11:42:27 +08:00
指定 related_name?
或者用 Shop 查
Shop.objects.select_related('author').values('author__name').annotate(c=Sum('sales_count'))

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/572729

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX