python - ManyToMany的Django交集使用Through模型
问题描述
我有两个使用直通模型具有多对多关系的模型。
class Person(Model):
departments = ManyToManyField('Department', through='DepartmentStaff')
class Department(Model):
id = ...
class DepartmentStaff(Model):
staff_member = ForeignKey(Person, on_delete=CASCADE)
department = ForeignKey(Department, on_delete=CASCADE)
experience = DurationField()
我想检查 2 Person 对象是否至少共享一个部门。例如,如果人员p1
在部门工作d1
,d2
并且人员p2
在部门d2
工作d3
,那么他们都工作d2
,输出应该是True
我知道我不能做这样的事情
>>> p1.departments.intersection(p2.departments).exists()
...
AttributeError: 'ManyRelatedManager' object has no attribute 'query'
因为我使用的是直通关系。检查 2 到 ManyToMany 查询集是否包含至少一个相同元素的最佳方法是什么?
解决方案
也许是这样的?
DepartmentStaff.objects.filter(staff_member='p1', department__in=DepartmentStaff.objects.filter(staff_member='p2'))
推荐阅读
- typescript - 有什么办法可以避免在其他模块中声明的注入令牌的预先声明?
- c# - 如何使用 Docker 和 Kaniko 减少 .NET Core 应用程序的构建时间?
- php - 试图在和 ` 中显示来自 PHP 脚本的回显图像
目标:
1)我在网络根目录外有一个图像文件夹,其中放置了来自网络应用程序的所有图像(每个图像路径都保存在数据库表中);
2) 我想根据用户的请求获取该图像。
很简单,对吧?
我做了:
a)创建一个类来读取图像(具有我能记住的所有安全功能和保护措施)。它(成功地)返回使用相应的
- vue.js - 为什么浏览器会在路由/url 更改时显示缓存的 Vue.js 视图?
- javascript - 如何在 React/Preact 组件之间私下传递数据
- java - 正确检查用户是否登录。 Android
- python - 无法为同一服务器上的多个 mod_wsgi 应用导入 Pandas
- date - 时间和日期标准?
- html - 使用 CSS position-absolute 放置元素
- bash - BASH 测试文件名是否以 .dylib 结尾