私は次の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))
何か案は?