Проверка формы администратора Django - PullRequest
0 голосов
/ 22 декабря 2018

В моем приложении django я хочу добавить проверку к автоматически сгенерированной административной форме модели.Я хочу поднять ValidationError, если атрибут 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 голосов
/ 22 декабря 2018

Вы не зарегистрировали модель 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
...