gpt4 book ai didi

python - django 'auto_now' 如何忽略指定字段的更新

转载 作者:太空宇宙 更新时间:2023-11-03 16:24:19 25 4
gpt4 key购买 nike

我有一个模型,如下所示:

    name = models.CharField(max_length=255)
modify_time = models.DateTimeField(auto_now=True)
chasha = models.CharField(max_length=255)
stat = models.CharField(max_length=255)

通常,当我更新“name”、“chasha”、“stat”字段时,“modify_time”也会更新。但是,我只是不想在更新“stat”时更新“modify_time”。我该怎么做?

谢谢。

最佳答案

使用自定义保存方法通过查看以前的实例来更新字段。

from django.db import models
from django.utils import timezone as tz


class MyModel(models.Model):
name = models.CharField(max_length=255)
modify_time = models.DateTimeField(null=True, blank=True)
chasha = models.CharField(max_length=255)
stat = models.CharField(max_length=255)

def save(self, *args, **kwargs):
if self.pk: # object already exists in db
old_model = MyModel.objects.get(pk=self.pk)
for i in ('name', 'chasha'): # check for name or chasha changes
if getattr(old_model, i, None) != getattr(self, i, None):
self.modify_time = tz.now() # assign modify_time
else:
self.modify_time = tz.now() # if new save, write modify_time
super(MyModel, self).save(*args, **kwargs) # call the inherited save method

编辑:像上面一样从modify_time中删除auto_now,否则它将在保存方法中设置。

关于python - django 'auto_now' 如何忽略指定字段的更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38128926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com