Django, Как обновлять атрибут DateTimeField только при изменении одного конкретного атрибута
Я хочу обновлять атрибут date_assigned
только при изменении атрибута Customer
. Я знаю, что мне нужно перезаписать функцию сохранения в той же модели, но я не знаю, как именно.
class Ip(models.Model):
customer = models.ForeignKey(Customer, null=False, on_delete=models.CASCADE)
ip = models.GenericIPAddressField(protocol="IPv4", null=False, unique=True)
date_created = models.DateTimeField(auto_now_add=True,)
date_updated = models.DateTimeField(auto_now=True,)
date_assigned = models.DateTimeField(auto_now=True)
Есть идеи? Спасибо заранее.
Пожалуйста, прочитайте документы о переопределении метода сохранения.
Один очень полезный инструмент для этого находится в пакете model_utils.
from model_utils import FieldTracker
class Ip(models.Model):
customer = models.ForeignKey(Customer, null=False, on_delete=models.CASCADE)
ip = models.GenericIPAddressField(protocol="IPv4", null=False, unique=True)
date_created = models.DateTimeField(auto_now_add=True,)
date_updated = models.DateTimeField(auto_now=True,)
date_assigned = models.DateTimeField()
customer_tracker = FieldTracker(fields=['customer'])
def save(self, *args, **kwargs):
if self.customer_tracker.changed():
self.date_assigned = timezone.now()
super().save(*args, **kwargs)