Django保存方法无声地失败

1 python django django-models django-orm

我有一个像这样的模型

class UserAttributes(models.Model):

uuid                = models.CharField(max_length=63, null=True,blank=True)
user                = models.OneToOneField(User)
activation_date     = models.DateTimeField(null=True, blank=True)
mobile_number       = models.CharField(max_length=20, null=True, blank=True)
created_date        = models.DateTimeField(auto_now_add=True)

def __str__(self):
    return '{0} - {1}'.format(self.user.id, self.user.get_full_name())

def save(self, *args, **kwargs):

    if not self.pk:
        self.uuid = uuid.uuid4().hex
        return super(UserAttributes, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

我已经覆盖了保存方法.但是,在我的观点中,当我手动执行类似的操作时

attributes.activation_date = timezone.now()
attributes.save()
Run Code Online (Sandbox Code Playgroud)

字段activation_date的值永远不会写入数据库.这是我第一次遇到这样的问题.没有例外.有人可以指出这里可能是什么情况.

hsp*_*her 5

我注意到,在某些情况下,你并没有在模型保存中调用超级.应该是这样的

def save(self, *args, **kwargs):

    if not self.pk:
        self.uuid = uuid.uuid4().hex
    return super(UserAttributes, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

因此,如果更新对象,则不会调用save,因此不会更新数据.