Как я могу обновлять поле "last_updated", когда пользователь изменяет данные
Я пытаюсь сделать пользовательскую модель пользователя в django и добавить дополнительное поле "last_updated", которое должно обновлять дату и время каждый раз, когда пользователь вносит изменения или сохраняет новые данные.
class User(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
photo = models.ImageField(upload_to='avatars/', null=True, blank=True)
last_updated = models.DateTimeField(null=True, blank=True) #defining field in the model.
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
def __str__(self):
return self.email
Пробовали ли вы переопределить метод сохранения User:
from datetime import datetime
class User(AbstractUser):
# rest of code
def save(self, *args, **kwargs):
self.last_update = datetime.now()
super(User, self).save(*args, **kwargs)
Не проще ли использовать auto_now=True?
Таким образом, ваша модель может выглядеть следующим образом:
class User(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
photo = models.ImageField(upload_to='avatars/', null=True, blank=True)
last_updated = models.DateTimeField(auto_now=True) #defining field in the model.
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = []
objects = UserManager()
def __str__(self):
return self.email
Это поможет вам иметь меньше кода и использовать встроенную функциональность Django.