📜  editable=False – Django 内置字段验证(1)

📅  最后修改于: 2023-12-03 14:40:56.637000             🧑  作者: Mango

Editable=False – Django 内置字段验证

Django 是一个使用 Python 编程语言的 Web 应用程序框架,可帮助开发人员快速创建高质量的 Web 应用程序。在 Django 中,我们可以使用预定义的字段类型(如 CharField、IntegerField、BooleanField 等)来定义模型类中的数据字段。其中 Editable 属性指定该字段是否可编辑。本文将探讨 editable=False 属性的作用及其验证方式。

Editable=False 属性的作用

editable 属性指定该字段是否可编辑,因此,当我们定义 editable=False 时,该字段将不能在任何情况下进行修改,除非在保存对象时显式更新对象(如在管理员站点上)。以下是 Django 中 editable 属性的默认行为:

  • 如果字段 editable=True,则该字段可以在创建或更新对象时进行编辑
  • 如果字段 editable=False,则该字段可以在通过管理员站点进行更新时进行编辑,但不能在创建或更新对象时进行编辑
验证 Django 模型的 Editable 属性

使用 ModelFormfields 属性时,editable=False 会被视为只读字段。例如:

from django.forms import ModelForm
from myapp.models import MyModel

class MyModelForm(ModelForm):
    class Meta:
        model = MyModel
        fields = ['id', 'my_field', 'my_other_field']

在这个例子中,如果 my_field 的 editable 属性设置为 False,则在调用此表单时,该字段将显示为只读。

请注意,这种验证只在使用 ModelForm 且未显式指定 widgets 时才会发生。

结论

editable 属性为 Django 模型的字段提供了更细粒度的控制。将 editable 属性设置为 False 的字段将禁止在大多数情况下进行编辑,但在通过管理员站点进行更新时可以进行编辑。我们可以在 ModelForm 中使用默认的验证规则来验证 editable 属性,但要注意除非在模型字段上添加明确的组件,否则它们不会为您创建只读表单字段。