Django多对多匹配多个标准

时间:2016-08-01 22:01:47

标签: django

我有多个相关模型。给定的Work对象CrewPerson和/或Company及其给定的Role定义。我想构建一个有效的查询,返回给定Crew实例的给定Role实例的所有项目(不同)...

class Work(models.Model):
    title=models.CharField(max_length=128)

class Crew(models.Model(models.Model):
    work=models.ForeignKey(Work)
    person=models.ForeignKey(Person)
    company=models.ForeignKey(Company)
    role=models.ForeignKey(Role)

个别记录都有一个slug字段用于识别。 (PersonCompanyRole

对于给定的Person,我查询CompanyWork时遇到问题,但添加Role是我丢失的地方。< / p>

EG。 works = works.filter(crew__person__slug=person_slug).distinct()很容易

我是否使用Q对象?

错误......也许它就像works = works.filter(crew__person__slug=person_slug,crew__role__slug=role_slug).distinct()

一样简单
  

我认为OP只回答了他自己的问题......

1 个答案:

答案 0 :(得分:0)

所以是的,我在问题胡言乱语中回答了我自己的问题,但它仍然有用。我没有使用Q对象。

works = works.filter(crew__person__slug=person_slug,crew__role__slug=role_slug).distinct()