Django:基于特定标准拒绝模型保存

2024-05-19 23:02:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

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

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

如何重写我的Person模型的save()方法,从而拒绝这样的编辑?尤其是,我正在努力:

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

请自行回答问题的任何部分,并提前感谢!你知道吗


Tags: django方法用户name模型编辑modelmodels
2条回答

我会在“clean”方法中使用表单和一些自定义验证:

示例:

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

This answer有两种很好的方法来检测字段是否已更改并执行某些操作。你知道吗

在您的例子中,您可以修改它,不仅检测字段是否已更改,还可以检测它是否是您希望允许的更改。你知道吗

相关问题 更多 >