Django условная вставка в несколько полей
У меня есть две модели Django: Object и Purchases. В модели Object есть два поля: date_most_recent_purchase и date_first_purchase. Я вставляю много словарей, и каждый словарь может иметь следующие значения (конечно, date и object_id могут быть любыми):
{"object_id": 1, "date_purchase": None, "date_first_purchase": None}
{"object_id": 1, "date_purchase": None, "date_first_purchase": "2020-11-11"}
{"object_id": 1, "date_purchase": "2019-12-12", "date_first_purchase": None}
{"object_id": 1, "date_purchase": "2018-2-10", "date_first_purchase": "2018-2-2"}
Ниже приведены мои модели Django:
class Object(models.Model):
object_id = models.IntegerField(unique=True)
date_first_purchase = models.DateField(null=True)
date_most_recent_purchase = models.DateField(null=True)
# this second model is not very important here
class Purchase(models.Model):
purchase_id = models.IntegerField(unique=True)
date_purchase = models.DateField(null=True)
(Для данного объекта_id у меня много покупок)
Я хотел бы определить некоторые правила:
- если для данного object_id в БД отсутствует дата_самой_последней_покупки (= null), но в словаре есть
date_first_purchase(например,{"object_id": 1, "date_purchase": None, "date_first_purchase": "2020-11-11"}), мы должны установить значение даты_первой_покупки в БД для поляdate_most_recent_purchase. - Мы должны применить ту же логику в другом случае:
date_first_purchaseв БД - null, а словарь содержит значение типа{"object_id": 1, "date_purchase": "2019-12-12", "date_first_purchase": None}.
- Если
date_first_purchaseустановлен в DB, но словарь содержит значение с меньшим значениемdate_first_purchase, мы должны установить меньшее значение .
- Так же, если
date_most_recent_purchaseзадано в DB, но файл содержит значение с большим значениемdate_purchase, мы должны установить новое значение.
Мой вопрос: Какой самый чистый способ с Django 3+ для управления всеми этими правилами ?