在我的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)
答案 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