0

我有以下 Django 模型:

class RiskOf(MPTTModel):
    parent = TreeForeignKey('self', null=True, blank=True, verbose_name=_(u'catégorie'), related_name='children')
    name = models.CharField(_('nom'), max_length=200)

class WorkingPlace(models.Model):
   name = models.CharField(_('nom'), max_length=200)
   risks = models.ManyToManyField(RiskOf, through='WorkingPlaceRisk', verbose_name=_('risques'))

class WorkingPlaceRisk(models.Model):
    working_place = models.ForeignKey(WorkingPlace, verbose_name=_('poste de travail'))
    risk_of = models.ForeignKey(RiskOf, blank=True, null=True, verbose_name=_(u'risque DE avérés'))
    STATUS_CHOICES = (
        (1, _(u'éliminé')),
        (2, _(u'réduit')),
    )
    status = models.IntegerField(_(u'état'), max_length=1, choices=STATUS_CHOICES, null=True, blank=True)
    chsct = models.BooleanField(_(u'enquête chsct'))

给定一个 RiskOf 对象(我们称之为 MYRISK),我需要检索所有 WorkingPlace 对象,这些对象至少有一个风险等于或继承于 MYRISK并且标志 chsct 设置为 True。

我知道我可以使用这个:

wplaces = WorkingPlace.objects.filter(workingplacerisk__risk_of__in = MYRISK.get_descendants(include_self=True))

检索至少有一个风险等于或继承于 MYRISK 的所有 WorkingPlace 对象,但我无法找到一种方法来“实现”我需要的第二个条件,以一种可怕且明显不正确的方式编写,我需要类似的东西(只是为了解释更好的我需要)

wplaces = WorkingPlace.objects.filter(workingplacerisk.filter(chsct=True)__risk_of__in = MYRISK.get_descendants(include_self=True))

有任何想法吗?

4

1 回答 1

0
wplaces = WorkingPlace.objects.filter(workingplacerisk__risk_of__in = MYRISK.get_descendants(include_self=True) , workingplacerisk__chsct = True)
于 2013-10-22T15:20:55.637 回答