Django管理表单验证

时间:2018-12-22 14:13:19

标签: python django forms validation

在我的django应用中,我想向模型的自动生成的管理表单添加一个验证。如果属性ValidationError等于“ test”,我想提出一个title。我在admin.py中尝试了以下方法,但是如果标题为“ test”,则什么也不会发生。有人可以帮忙吗?

from django.contrib import admin
from django.forms import ModelForm, ValidationError

from .models import MyModel

class MyModelAdminForm(ModelForm):
    class Meta:
        model = MyModel
        fields = '__all__'

    def clean(self):
        cleaned_data = super().clean()
        title = cleaned_data.get('title')
        if title == 'test':
            raise forms.ValidationError('invalid!')
        return cleaned_data

class MyModelAdmin(admin.ModelAdmin):
    form = MyModelAdminForm

admin.site.register(MyModel)

1 个答案:

答案 0 :(得分:0)

您尚未向MyModel类注册MyModelAdmin模型。您可以这样做:

admin.site.register(MyModel, MyModelAdmin)

此外,由于clean方法仅检查一个字段(title),因此您应该使用方法clean_title并在其中提高ValidationError。不需要clean()

示例:

def clean_title(self):
    title = self.cleaned_data['title']
    if title == 'test':
        raise forms.ValidationError('invalid!')
    return title