[英]Django: Denying model saves based on particular criteria
我有一個 Django model,非常簡單:
class Person(models.Model):
name = models.CharField(max_length=100)
如果實際名稱發生變化,我想拒絕保存這個 model,但我想允許更改大寫。 例如:
SAM -> sAm: allowed
Sam -> SAM: allowed
Sam -> John: not allowed
如何覆蓋我的 Person model 的save()
方法,以便拒絕此類編輯? 特別是,我正在努力解決:
save()
方法中獲取 object 的預保存版本。請隨意單獨回答問題的任何部分,在此先感謝您!
這個答案有兩個很好的方法來檢測一個字段是否已經改變並做一些事情。
在您的情況下,您將修改它以不僅檢測字段是否已更改,還檢測它是否是您想要允許的更改。
我會在“干凈”方法中使用表單和一些自定義驗證:
例子:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.