gpt4 book ai didi

django - 如何检查 django 模型上的先前值

转载 作者:行者123 更新时间:2023-12-03 19:59:39 27 4
gpt4 key购买 nike

我有一个带有字段的 Django 模型,我希望在更新后始终大于同一模型实例的前一个字段,如下所示:

class MyModel(models.Model):
version = models.FloatField()
prev_value = 0

def clean(self):
if self.version <= self.prev_value:
raise ValidationError('error msg')

def save(self,*args,**kwargs):
super(MyModel, self).save(*args, **kwargs)
self.prev_value = self.version

我知道 clean 工作正常,因为我在同一个methon上有其他验证并且它工作得很好,我做错了什么,我该如何解决?
提前致谢。

我测试了它,它没有在 verion < prev_value 的更新上抛出任何错误消息

编辑:我正在使用新的 django 1.4

最佳答案

模型子类实际上最终有一个元类重新格式化它们的所有类属性。因此,您不应将普通值初始化为类属性。您应该在 __init__ 中执行此操作

class MyModel(models.Model):
version = models.FloatField()

def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
self._prev_value = self.version

def clean(self):
if self.version <= self._prev_value:
raise ValidationError('error msg')

def save(self,*args,**kwargs):
super(MyModel, self).save(*args, **kwargs)
self._prev_value = self.version

关于django - 如何检查 django 模型上的先前值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10339441/

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