mam następujące modele:Django: Wyrażenie warunkowe
class Agreement(models.Model):
...
organization = models.ForeignKey("Organization")
class Signed_Agreement(models.Model):
agreement = models.ForeignKey("Agreement")
member = models.ForeignKey("Member")
Co staram się zrobić to uzyskać listę wszystkich umów dotyczących danej organizacji (self.organization) i opisywanie każdego umowę z informacji o tym, czy został podpisany przez konkretnego członka (self.member).
Jeśli Umowa została podpisana, istnieje instancja umowy Signed_Agent dotycząca konkretnej umowy i członka.
Jak napisać zapytanie dotyczące tego?
Oto mój wysiłek tej pory:
from django.db.models import When, F, Q, Value
def get_queryset(self):
agreements = _agreement_model.Agreement.objects.filter(
organization=self.organization
).annotate(
signed=When(Q(signed_agreement__member=self.member), then=Value(True))
).order_by(
'name'
)
return agreements
To nie jest produkujących poprawnych wyników.
Każda pomoc zostanie doceniona. Z góry dziękuję.
Dziękuję za odpowiedź, dzięki czemu jestem bardzo blisko tego, co chcę. Otrzymuję ten błąd: django.core.exceptions.FieldError: Nie można rozwiązać typu wyrażenia, nieznany pole_wyjściowe Czy wiesz, co to oznacza? –
Wygląda na to, że musisz powiedzieć "Sprawie", jaki to rodzaj pola, zredagowałem odpowiedź, aby to zrobić – sedavidw
ah widzę, dziękuję bardzo. –