每当用户更改数据时,如何更新 "last_updated" 字段

How can I update "last_updated" field, whenever user changes data

我正在尝试在 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

您是否尝试过重写用户的保存方法:

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 的内置功能。