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+ для управления всеми этими правилами ?

Вернуться на верх