У меня две модели: одна с ForeignKey
Я пытаюсь сопоставить. Чтобы сделать это, я просматриваю вторую модель по определенному числу и дате. Проблема в том, что у него две даты, и я должен принять решение о том, какую дату выбрать. В некоторых случаях он установлен в NULL, в некоторых - нет. Если это, я должен получить второе поле даты. У меня есть что-то вроде этого:Условные выражения Django в запросах
class MyModel1(models.Model):
model2_key = models.ForeignKey(MyModel2)
model1_date=...
model1_number=...
вторая модель:
class MyModel2(models.Model):
model2_date1=...
model2_date2=...
model2_number=...
Теперь, как сделать выбор? Я просмотрел документацию относительно F expressions
, Q expressions
, When expressions
, Select
, и я немного смущен. Как я могу найти функцию, которая возвращает искомый объект MyModel2
? У меня есть что-то подобное, но это не сработает.
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))
Я совершенно новичок в django, поэтому любая помощь будет оценена.
ли 'MyModel2.objects.filter (Q (model2_date1 = searched_date) | Q (model2_date2 = searched_date)) фильтр (model2_number = searched_number)' не работает? – Justin
Иногда иногда создается одна из дат, и это критерий, на котором я должен решить, соответствует ли объект запросу или нет. – gonczor