Помогите с ошибкой проверки форм администратора - PullRequest
0 голосов
/ 16 сентября 2009

Я новичок в Django, у меня мало проблем с проверкой формы в модуле администратора, более конкретно с повышением исключений в ModelForm. Я могу проверить и манипулировать данными в чистых методах, но не может поднять какие-либо ошибки. Всякий раз, когда я включаю любое повышение утверждение, что я получаю эту ошибку "NoneType" объект не имеет атрибута 'ValidationError' ". Когда я удаляю часть повышения, все работает хорошо.

Затем, если я повторно импортирую django.forms (внутри чистого метода) с другим псевдонимом (например, из форм импорта django как blahbalh), тогда я могу вызывать сообщения, используя blahblah.ValidateException.

Какие-нибудь советы или предложения по правильному выполнению таких действий?

Вот пример того, что я делаю в Admin.py:

.

admin.py

из форм импорта Django из proj.models import * из django.contrib импорт admin

класс FontAdminForm (forms.ModelForm):

class Meta:

    model = Font

def clean_name(self):

    return self.cleaned_data["name"].upper()

def clean_description(self):

    desc = self.cleaned_data['description']
    if desc and if len(desc) < 10:
        raise forms.ValidationError('Description is too short.')
    return desc

класс FontAdmin (admin.ModelAdmin):

form = FontAdminForm
list_display = ['name', 'description']

admin.site.register (Font, FontAdmin)

- Спасибо, A

1 Ответ

3 голосов
/ 16 сентября 2009

Возможно, проблема в * import.

from proj.models import * 

если proj.models содержит какие-либо переменные с именами форм (в том числе некоторые модули импорта, такие как "из форм импорта django), это может привести к нарушению вашего первоначального импорта:

from django import forms

Я бы явно импортировал из proj.models, например,

from proj.models import Font

Если это не сработает, посмотрите, есть ли другие переменные с именем "формы", которые могут мешать вашей области действия.

Вы можете использовать самоанализ, чтобы увидеть, что такое "формы". Внутри вашего метода clean_description:

print forms.__package__

Я предполагаю, что это не будет "django" (или вернет ошибку, указывающую, что это определенно не django.forms).

...