如何在Django Admin中进行字段验证

2023-04-11 00:00:00 字段 验证 如何在

在Django Admin中进行字段验证非常简单,只需要在ModelAdmin中定义一个clean_字段名的方法,即可在保存数据时对该字段进行验证。例如,我们要对一个名为“name”的CharField进行长度验证:

# models.py
from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=10)
    # 其他字段

# admin.py
from django.contrib import admin
from .models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    def clean_name(self):
        name = self.cleaned_data['name']
        if len(name) < 5:
            raise forms.ValidationError('名称长度必须大于等于5个字符')
        return name

admin.site.register(MyModel, MyModelAdmin)

在上面的代码中,我们定义了一个名为clean_name的方法,该方法会在保存数据时自动调用。我们首先获取该字段的值,然后进行验证,如果发生错误,则通过抛出ValidationError异常来提示用户。如果验证成功,则返回该字段的值。

需要注意的是,如果您要在Admin中进行字段验证,需要先导入forms模块。此外,如果您想在验证过程中使用字符串作为范例,则可以在clean_name方法中使用以下代码来验证:

if 'pidancode.com' in name or '皮蛋编程' in name:
    raise forms.ValidationError('名称中不能包含“pidancode.com”或“皮蛋编程”')

相关文章