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 と呼びましょう) が与えられた場合、少なくとも 1 つのリスクが MYRISK と等しいか子孫であり、chsct フラグが True に設定されているすべての WorkingPlace オブジェクトを取得する必要があります

私はこれを使用できることを知っています:

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

少なくとも 1 つのリスクが MYRISK と等しいかその子孫であるすべての WorkingPlace オブジェクトを取得するには、必要な 2 番目の条件を「実装」する方法を見つけることができません。私が必要とするものより良い)

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

何か案は?

4

1 に答える 1