Как получить доступ к полям modelForms, которые передаются как модель - PullRequest
0 голосов
/ 20 апреля 2011

forms.py

class BandForm(forms.ModelForm):
    time_from = forms.ChoiceField(choices=[(8,  "08:00"),(9, "09:00"),(10, "10.00"),(11,  "11:00"),
                                           (12, "12:00"),(13, "13:00"),(14, "14:00"),(15, "15:00"),
                                           (16, "16:00"),(17, "17:00"),(18, "18:00"),(19, "19:00"),
                                           (20, "20:00"),(21, "21:00"),(22, "22:00"),(23, "23:00")])
    time_to   = forms.ChoiceField(choices=[(8,  "08:00"),(9,  "09:00"),(10, "10:00"),(11, "11:00"),
                                           (12, "12:00"),(13, "13:00"),(14, "14:00"),(15, "15:00"),
                                           (16, "16:00"),(17, "17:00"),(18, "18:00"),(19, "19:00"),
                                           (20, "20:00"),(21, "21:00"),(22, "22:00"),(23, "23:00")])
    class Meta:
        model = Entry1
        exclude = ('created','date')

Часть views.py

if request.method == "POST":
        form = BandForm(request.POST)
        if form.is_valid():
            form = form.save(commit=False)
            if year and month and day:
                form.date = datetime.date(int(year),int(month),int(day))
                form.save()

Допустим, я хочу сделать некоторую проверку в forms.py для моего класса Bandform

def clean_fieldname(self): ....,

и обычно вы получаете такие параметры, как это - self.cleaned_data.get('field_name'). Так что, если я попытаюсь получить self.cleaned_data.get ('time_from') - все прекрасно работает. Но если я попытаюсь получить self.cleaned_data.get ('date'), я получу None.

Почему?

Ответ

Модель формы Джанго (с исключенным полем) Единственное, что было немного неясно из предоставленного мною поста, это то, что вы должны обращаться к экземпляру в forms.py как self.instance.fieldname, но не к self.cleaned_data.get ('fieldname').

1 Ответ

0 голосов
/ 20 апреля 2011

В вашем исключении:

exclude = ('created','date')

Вы исключаете поле date из видимого в форме.Это может объяснить, почему вы не можете получить доступ к date в cleaned_data.Попробуйте удалить date из исключающего кортежа и отобразить его в шаблоне, чтобы увидеть, появляется ли он.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...