Ich habe zwei Modelle, eins mit ForeignKey
Ich versuche zu entsprechen. Um das zu tun, suche ich das zweite Modell nach einer bestimmten Nummer und einem Datum. Das Problem ist, es hat zwei Daten und ich muss mich entscheiden, welches Datum ich wählen soll. Unter bestimmten Umständen ist NULL gesetzt, in anderen nicht. Wenn es ist, muss ich das zweite Datumsfeld bekommen. Ich habe so etwas wie dies:Django bedingte Ausdrücke in Abfragen
class MyModel1(models.Model):
model2_key = models.ForeignKey(MyModel2)
model1_date=...
model1_number=...
zweites Modell:
class MyModel2(models.Model):
model2_date1=...
model2_date2=...
model2_number=...
Nun, wie die Wahl zu treffen? Ich habe die Dokumentation zu F expressions
, Q expressions
, When expressions
, Select
nachgeschlagen und bin ein wenig verwirrt. Wie kann ich eine Funktion schreiben, die das gesuchte Objekt MyModel2
zurückgibt? Ich habe so etwas, aber es wird nicht funktionieren.
def _find_model2(searched_date, searched_number):
searched_model2=MyModel2.objects.get(Q(model2_number=searched_number),
Q(When(model2_date1__e='NULL', then=model2_date2) |
Q(When(model2_date1__ne='NULL', then=model2_date1))=searched_date))
Ich bin ziemlich neu zu Django, so dass jede Hilfe geschätzt wird.
Ist 'MyModel2.objects.filter (Q (model2_date1 = searched_date) | Q (model2_date2 = searched_date)) Filter (model2_number = searched_number)' nicht? – Justin
Eines der Daten ist manchmal manchmal nicht eingerichtet und das ist das Kriterium, auf dem ich entscheiden muss, ob das Objekt Abfrage entspricht oder nicht. – gonczor