V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
kingofvir
V2EX  ›  Django

django 查询

  •  
  •   kingofvir · Jun 11, 2019 · 3672 views
    This topic created in 2520 days ago, the information mentioned may be changed or developed.

    模型

    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,并且能统计该作者在所有书点点销售总数?

    5 replies    2019-06-11 11:42:27 +08:00
    tristankuo
        1
    tristankuo  
       Jun 11, 2019
    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
        2
    kingofvir  
    OP
       Jun 11, 2019
    在 Author 每指明 MTM 字段 能使用 prefetch related('shops')
    kingofvir
        3
    kingofvir  
    OP
       Jun 11, 2019
    @kingofvir 在 Author 没指明 MTM 字段 能使用 prefetch related('shops')
    kingofvir
        4
    kingofvir  
    OP
       Jun 11, 2019
    我用了这个
    ```
    Shop.objects.values('author__pk').annotate(
    all_sales_count=Sum('sales_count', distinct=True),
    name=F('author__name')
    )
    ```
    tristankuo
        5
    tristankuo  
       Jun 11, 2019
    指定 related_name?
    或者用 Shop 查
    Shop.objects.select_related('author').values('author__name').annotate(c=Sum('sales_count'))
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2878 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 06:13 · PVG 14:13 · LAX 23:13 · JFK 02:13
    ♥ Do have faith in what you're doing.