Как изменить модель Django из класса с помощью булеана
У меня есть класс location в моем models.py
class Location(models.Model):
...
orderplaced = models.DateTimeField(auto_now_add=True, blank=True)
ordersent = models.BooleanField(default=False)
order_sent_time = models.DateTimeField(auto_now=True, blank=True)
Как сделать так, чтобы булево ordersent контролировало, если order_sent_time пустой или нет
Я пробовал использовать
if ordersent:
order_sent_time = models.DateTimeField(auto_now=True, blank=True)
else:
order_sent_time = models.DateTimeField(null=True, blank=True)
Как я могу заставить булево значение влиять на order_sent_time?
Чтобы динамически установить некоторое значение объекта в Django, вы можете переопределить метод save() :
# Assume that (USE_TZ=True) in settings file
from django.utils import timezone
class Location(models.Model):
...
orderplaced = models.DateTimeField(auto_now_add=True, blank=True)
ordersent = models.BooleanField(default=False)
order_sent_time = models.DateTimeField(null=True, blank=True)
def save(self, *args, **kwargs):
# If ordersent is True then set order_sent_time to now
if ordersent:
self.order_sent_time = timezone.now()
super(Location, self).save(*args, **kwargs)
return self
Примечание : Каждый раз, когда вы создаете или редактируете объект Location, он будет проверять, если переменная ordersent
равна True, то order_sent_time
будет установлена на дату выполнения. В противном случае она не будет иметь значения.