Skip to main content
 首页 » 编程设计

python之Django 中的智能查询,与用户的多对多关系

2025年05月04日14开发

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

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

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

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

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

谢谢!

请您参考如下方法:

# users in projects owned by request.user   
users = User.objects.filter(projectmodel__owner=request.user).distinct() 

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