Django 保存方法静默失败
Django save method fails silently
我有一个类似这样的模型
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)
我已经重写了保存方法。但是,在我看来,当我手动执行类似
的操作时
attributes.activation_date = timezone.now()
attributes.save()
字段 activation_date 的值从未写入数据库。这是我第一次遇到这样的问题。没有出现异常。有人可以指出这里到底是什么情况吗。
我注意到,在某些情况下,您没有在模型保存中调用 super。本来应该是这样的
def save(self, *args, **kwargs):
if not self.pk:
self.uuid = uuid.uuid4().hex
return super(UserAttributes, self).save(*args, **kwargs)
因此,万一更新对象时,不会调用保存,因此不会更新数据。
我有一个类似这样的模型
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)
我已经重写了保存方法。但是,在我看来,当我手动执行类似
的操作时attributes.activation_date = timezone.now()
attributes.save()
字段 activation_date 的值从未写入数据库。这是我第一次遇到这样的问题。没有出现异常。有人可以指出这里到底是什么情况吗。
我注意到,在某些情况下,您没有在模型保存中调用 super。本来应该是这样的
def save(self, *args, **kwargs):
if not self.pk:
self.uuid = uuid.uuid4().hex
return super(UserAttributes, self).save(*args, **kwargs)
因此,万一更新对象时,不会调用保存,因此不会更新数据。