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" 可能是个好主意。