0

我有一个 Django 模型,非常简单:

class Person(models.Model):
    name = models.CharField(max_length=100)

如果实际名称更改,我想拒绝保存此模型,但我想允许更改大小写。例如:

SAM -> sAm: allowed
Sam -> SAM: allowed
Sam -> John: not allowed

如何覆盖save()我的 Person 模型的方法,以便拒绝此类编辑?特别是,我正在努力解决:

  1. 在方法中获取对象的预保存版本save()
  2. 当保存被拒绝时,在 Django 的管理区域内向用户显示一条消息。
  3. 拒绝保存时将用户返回到编辑屏幕。

随意回答问题的任何部分,并提前致谢!

4

2 回答 2

1

这个答案有两种很好的方法来检测字段是否已更改并执行某些操作。

在您的情况下,您将对其进行修改,不仅可以检测字段是否已更改,还可以检测它是否是您想要允许的更改。

于 2012-04-06T18:46:30.720 回答
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
于 2012-04-06T18:16:27.430 回答