Проверка модели в Django 1.1 - PullRequest
2 голосов
/ 08 мая 2011

Я использую Django 1.1. Я хочу выполнить проверку модели; в частности, проверьте расширение файла в FileField. Я могу нормально проверить расширение, но я не знаю, как показать ошибку в админ-панели, если это неправильное расширение; аналогично тому, когда вы забыли заполнить обязательное поле.

Я пробовал 2 способа сделать это.

  • Создайте настраиваемое поле на основе поля файла и проверьте его методом clean (). Затем я могу вызвать ошибку ValidationError. Это работает в Django 1.2, но не в 1.1.

  • Перезаписать метод save () модели. Я не могу выбросить ValidationError здесь, хотя он просто показывает страницу с общей ошибкой (которую обычные пользователи не видят), а не полезное сообщение в админе.

Можно ли как-то сделать то, что я хочу в Django 1.1?

1 Ответ

3 голосов
/ 08 мая 2011

Django 1.1 не имеет валидации модели. Единственное другое место для проверки - в форме - все, что вам нужно сделать, это определить пользовательскую форму модели с помощью вашего чистого метода, а затем попросить администратора использовать ее.

class MyModelForm(forms.ModelForm):
    def clean_myfilefield(self):
        ... do validation or raise forms.ValidationError('message')

class MyModelAdmin(admin.ModelAdmin):
    model = MyModel
    form = MyForm

Обратите внимание, что просто проверить расширение недостаточно, чтобы убедиться, что вы получаете ожидаемый тип файла.

...