【发布时间】:2021-06-22 04:18:33
【问题描述】:
我在一个 django 项目中有以下设置
描述“Person”的模型,该模型包含2个多对多关系字段 一种。第一个单元字段连接到一个单元模型 (m2m) 湾。第二个工具字段连接到工具模型 (m2m)
单元和工具没有直接联系,但我想列出给定单元中使用的所有工具。
我不知道怎么做,因为这两个表没有连接?
class Person(models.Model):
name = models.CharField(max_length=100)
unit = models.ManyToManyField(Unit, blank=True)
rtools = models.ManyToManyField(Rtool, blank=True)
class Tool(models.Model):
tool_name = models.CharField(max_length=100)
tool_description = models.TextField( blank= True)
class Unit(models.Model):
unit_name = models.CharField(max_length=250)
** --- 我在视图部分找到了一个可行的解决方案
我将搜索分解为 2 个连续的关节。
-
对于给定的单元,我首先创建该单元的人员成员的查询集(我称为人员);
-
然后我可以使用该查询集通过 __in 过滤这些人使用的工具
这工作正常,但我不确定这是否是最好的方法?
def unit_detail(request, slug):
unit = get_object_or_404(Unit, slug=slug)
persons = Person.objects.filter(unit=unit)
tools = Rtool.objects.filter(
person__in = researchers).distinct()
...
【问题讨论】:
标签: sql django many-to-many