我有一个Django模型,非常简单:
class Person(models.Model):
name = models.CharField(max_length=100)
如果实际名称发生更改,我想拒绝保存此模型,但我想允许更改大小写。例如:
SAM -> sAm: allowed
Sam -> SAM: allowed
Sam -> John: not allowed
如何覆盖Person模型的save()
方法,以便拒绝此类编辑?特别是,我正在努力:
save()
方法获取对象的预保存版本。随意回答问题的任何部分,并提前感谢!
答案 0 :(得分:1)
This answer有两种很好的方法可以检测某个字段是否发生了变化并做了些什么。
在你的情况下你要修改它,不仅要检测一个字段是否已经改变,还要检测它是否是你想要允许的改变。
答案 1 :(得分:0)
我会在“干净”方法中使用表单和一些自定义验证:
示例:
class MyForm(ModelForm):
class Meta:
model = MyModel
def clean(self):
cleaned_data = self.cleaned_data
name = cleaned_data.get("name ")
if name == ###:
#custom validition checking here
raise forms.ValidationError('You can only capitalize.')
return cleaned_data