代码之家  ›  专栏  ›  技术社区  ›  Oli

使用链接的Django模型进行快速计数

  •  1
  • Oli  · 技术社区  · 15 年前

    class User:
        pass
    
    
    class ItemList:
        pass
    
    
    # A User can have more than one ItemList
    # An ItemList can have more than one User
    # Classic M2M
    
    class ItemListOwnership:
        user = fk(User)
        itemlist = fk(ItemList)
    
    
    # An ItemList has multiple Items
    
    class Item:
        itemlist = fk(ItemList)
    

    这就是我被困的地方。我对纯SQL方法很满意,如果这是唯一有效的方法的话,但我真的不想陷入我正在发布

    models.ManyToMany(..) 关系,因为我在 ItemListOwnership ItemList

    1 回复  |  直到 15 年前
        1
  •  3
  •   Daniel Roseman    15 年前

    首先,在链接表中定义额外字段是 through ManyToManyField userlist=ManyToMany('User', through='ItemListOwnership') UserList

    from django.db.models import Count
    User.objects.all().annotate(item_count=Count('userlist__item'))
    

    item_count