【问题标题】:Smart Querying in Django, ManyToMany relationships with UserDjango中的智能查询,与用户的多对多关系
【发布时间】:2011-07-24 20:42:57
【问题描述】:

我正在开发一个应用程序,该应用程序目前有很多多对多关系(最终会有更多),我正在尝试想出聪明的方法(阅读:正确的方法)来准确地查询 ORM已加入数据。

这是我拥有的和需要做的示例。我为伪代码道歉。

ProjectModel:
    owner = ForeignKey(User) #just one user
    people = ManyToMany(User) #multiple users and theoretically can also contain the owner

现在我想要查询的是当前用户拥有的项目中属于“人员”的每个用户的列表。

我不知道如何做到这一点。 __contains 似乎并不适合这个......所以我认为我的选择基本上只是查询每个项目并自己进行迭代。但如果我知道如何通过 ORM/SQL 获得它,那将会更加丰富。

谢谢!

【问题讨论】:

    标签: python django orm django-orm


    【解决方案1】:
    # users in projects owned by request.user  
    users = User.objects.filter(projectmodel__owner=request.user).distinct()
    

    如果有很多 m2ms,并且您在 people 字段中定义了 related_name,那么您将在反向查找中使用它而不是 projectmodel

    【讨论】:

    • 太棒了。巧妙地完成。这正是我一直在寻找的。似乎工作。
    猜你喜欢
    • 2023-03-07
    • 2015-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-07
    • 2019-08-10
    • 2012-10-07
    相关资源
    最近更新 更多