Проверка данных в Django ModelForm - PullRequest
3 голосов
/ 06 февраля 2010

И у меня есть простая модель для пакета

from models import Package
from django import forms

class PackageForm(forms.ModelForm):
class Meta:
    model= Package
    fields= ['name', 'version', 'url', 'description', 'arch', 'dependancies', 'conflicts', 'file']

Как я могу попросить модель формы проверить в рамках валидации, например, расширение файла (класс FileField) .sh?

есть ли способ поместить это в модель? я могу управлять им только в виде?

Спасибо

Edit: Кроме того, забыл спросить, у модели есть Foreignkey для аутентифицированной модели User ... которая будет содержать текущего пользователя .. как может Modelform управлять этим?

Еще раз спасибо


Спасибо за ответ! Я получаю это .. хотя я сталкиваюсь с проблемой

Пакет содержит внешний ключ для модели пользователя django.contrib.auth.models, Когда форма обрабатывается, как я могу сказать модели формы передать текущий пользовательский объект в экземпляр модели? я думал об этом ...

views.py

def add(request):
if request.method == 'POST':
    the_model= PackageForm(request.user, request.POST, request.FILES)
    if the_model.is_valid():
        the_model.save()

я переписал init в модели:

from models import Package
from django import forms

class PackageForm(forms.ModelForm):
def __init__(self,user,*args,**kwargs):
        super (PackageForm,self ).__init__(*args,**kwargs) # populates the post
        self.fields['maintainer_name'].queryset = user # adds the user object passed by add in views.py
class Meta:
    model= Package
    fields= ['name', 'version', 'url', 'description', 'arch', 'dependancies', 'conflicts', 'file']

manteiner_name - это объект ForeignKey (пользователь) ... это дает мне ключевую ошибку :( это не хорошо ... Любые решения?

Спасибо!

1 Ответ

6 голосов
/ 06 февраля 2010

Вы должны прочитать документацию django по проверке exttra: http://docs.djangoproject.com/en/1.1/ref/forms/validation/#ref-forms-validation Вам просто нужно определить метод clean_file().

...