Django manytomany 查询显示 none and/or 不成功
Django manytomany querying showing none and/or unsuccessful
我在查询多对多关系中的项目列表时遇到问题。我要查询的模型如下。这是一个模型,它将指示一个工人 select 正在 "opening" 并且许多工人可以 select 相同 "opening"。我正在尝试 select 已 select 编辑 "opening" 的工人列表,但我没有成功。
class FavOpening(models.Model):
opening = models.OneToOneField(Openings, blank=True, default=None)
worker = models.ManyToManyField(Worker, blank=True, default=None)
def __unicode__(self):
return str(self.opening)
这很奇怪,因为我在下面尝试了这个基于所选工人 (id-31) 的空缺类型并且它有效,工作人员 selected 的空缺将被打印。
employee = get_object_or_404(Worker, id=31)
print employee.favopening_set.all()
但是当我用下面的方法反过来让工作人员进入 manytomany 时,它不起作用。说它没有属性 "favopening_set"
openingobj = get_object_or_404(Openings, id=1)
print openingobj.favopening_set.all()
我还尝试执行以下操作以根据空缺职位 (id=1) 获取工作人员列表,但我没有得到任何结果 - 显示 Workers.Worker.None,这是不正确的,因为我至少有一名工人 select 编辑了这个空缺。(我在管理员中登记过)
openingobj = get_object_or_404(Openings, id=1)
print openingobj.favopening.worker
最后,我根据一些研究在下面尝试了这个,该研究表明使用预取来获取一组东西 - ,但它说管理器无法通过 openings 实例访问。
openingobj = get_object_or_404(Openings, id=1)
openingobj.objects.prefetch_related('favopening_set').all()
编辑回复以考虑评论中的反馈
所以你想获得所有选择空缺职位的工人的查询集。
下面的代码有帮助吗?
openingobj = get_object_or_404(Openings, id=1)
workers_queryset = opening.favopening.worker.all()
我认为将 "worker" 重命名为 "worker" 可能是个好主意。
我在查询多对多关系中的项目列表时遇到问题。我要查询的模型如下。这是一个模型,它将指示一个工人 select 正在 "opening" 并且许多工人可以 select 相同 "opening"。我正在尝试 select 已 select 编辑 "opening" 的工人列表,但我没有成功。
class FavOpening(models.Model):
opening = models.OneToOneField(Openings, blank=True, default=None)
worker = models.ManyToManyField(Worker, blank=True, default=None)
def __unicode__(self):
return str(self.opening)
这很奇怪,因为我在下面尝试了这个基于所选工人 (id-31) 的空缺类型并且它有效,工作人员 selected 的空缺将被打印。
employee = get_object_or_404(Worker, id=31)
print employee.favopening_set.all()
但是当我用下面的方法反过来让工作人员进入 manytomany 时,它不起作用。说它没有属性 "favopening_set"
openingobj = get_object_or_404(Openings, id=1)
print openingobj.favopening_set.all()
我还尝试执行以下操作以根据空缺职位 (id=1) 获取工作人员列表,但我没有得到任何结果 - 显示 Workers.Worker.None,这是不正确的,因为我至少有一名工人 select 编辑了这个空缺。(我在管理员中登记过)
openingobj = get_object_or_404(Openings, id=1)
print openingobj.favopening.worker
最后,我根据一些研究在下面尝试了这个,该研究表明使用预取来获取一组东西 -
openingobj = get_object_or_404(Openings, id=1)
openingobj.objects.prefetch_related('favopening_set').all()
编辑回复以考虑评论中的反馈
所以你想获得所有选择空缺职位的工人的查询集。 下面的代码有帮助吗?
openingobj = get_object_or_404(Openings, id=1)
workers_queryset = opening.favopening.worker.all()
我认为将 "worker" 重命名为 "worker" 可能是个好主意。