/ / Model validation no Django 1.1 - django, django-models, django-admin

Validação de modelo no Django 1.1 - django, django-models, django-admin

Eu estou usando o Django 1.1 Eu gostaria de realizar a validação em um modelo; especificamente, verifique a extensão de um arquivo em um FileField. Eu posso fazer a verificação de extensão bem, mas eu não sei como mostrar um erro no painel de administração se é a extensão errada; semelhante a quando você se esquece de preencher um campo obrigatório.

Eu tentei duas maneiras de fazer isso.

  • Crie um campo personalizado, baseado em um campo de arquivos e faça a validação do método clean (). Eu posso então levantar um ValidationError. Isso funciona no Django 1.2, mas não no 1.1.

  • Sobrescreva o método save () do modelo. Eu sou incapaz de lançar um ValidationError aqui, uma vez que apenas mostra uma página de erro geral (que usuários comuns não verão) e não uma mensagem útil no admin.

Existe alguma maneira que eu possa fazer o que eu quero no Django 1.1?

Respostas:

3 para resposta № 1

O Django 1.1 não possui validação de modelo. O único outro lugar para fazer a validação está no formulário - tudo o que você precisa fazer é definir um modelform personalizado com seu método clean e depois dizer ao administrador para usá-lo.

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

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

Observe que apenas a verificação da extensão não é suficiente para garantir que você esteja obtendo o tipo de arquivo esperado.