模型字段在save()中没有更新



在我的DjangoMyModel中,我创建了一个新的字段last_status_change(一个时间戳)。当状态改变时应该更新。

然而,即使print显示last_status_change计算正确,它也不会被保存。保存中禁止修改字段吗?这背后的原因是什么?如何解决这个问题?


class MyModel(models.Model):
first_name = models.CharField(max_length=100, verbose_name='Name')
confirmation_status = models.CharField(
choices=CONFIRMATION_STATUS_CHOICES,
default='registered', max_length=20
)
last_status_change = models.DateTimeField(null=True, blank=True)
def save(self, *args, **kwargs):
if self.pk:
original = MyModel.objects.get(pk=self.pk)
if original.confirmation_status != self.confirmation_status:
last_status_change = datetime.now()
return super(MyModel, self).save(*args, **kwargs)

您需要将其分配给self对象,因此:

from django.utils import timezone

class MyModel(models.Model):
first_name = models.CharField(max_length=100, verbose_name='Name')
confirmation_status = models.CharField(
choices=CONFIRMATION_STATUS_CHOICES, default='registered', max_length=20
)
last_status_change = models.DateTimeField(null=True, blank=True)
def save(self, *args, **kwargs):
if self.pk:
original = MyModel.objects.get(pk=self.pk)
if original.confirmation_status != self.confirmation_status:
self.last_status_change = timezone.now()
return super().save(*args, **kwargs)

最新更新