2012-01-24 2 views
-2

У меня есть форма django, где мне нужно установить значение для целей проверки, которое не передается как часть стандартного запроса на отправку.Django form, request.post и initial

В моем коде я в настоящее время есть что-то вроде этого:

if request.method == 'POST': 
     postform = CreatePostForm(request.POST, request.FILES, initial={'post_type':post.post_type}) 

     if postform.is_valid(): 
       ..... 

Значение post_type является выбор со значением чего-то вроде «QUE»

Проблема, которую я имею, что это не кажутся действительными. Кто-нибудь есть какие-либо предложения о том, как добавить значение post_type в класс CreatePostForm до проверки.

Обратите внимание: я не хочу раскрывать это значение в форме, поэтому включение его в качестве части сообщения не является вариантом.

+1

Есть ли 'post_type' поле на форме? Это помогло бы, если бы вы могли разместить по крайней мере поля вашего CreatePostForm, чтобы мы знали, какой тип проверки выполняется. – mklauber

ответ

7

Один подход, чтобы сделать это свойство на классе формы вы передадите в качестве аргумента, когда вы его экземпляр:

class CreatePostForm(forms.Form/ModelForm): 
    def __init__(self, post_type, *args, **kwargs): 
     super(CreatePostForm, self).__init__(*args, **kwargs) 
     self.post_type = post_type 

postform = CreatePostForm(post_type=post.post_type, request.POST, request.FILES) 

Надежда, которая помогает вам.

+0

Не работает для меня ... вы пропустили параметр self в ** __ init __() **? – MrROY

+0

Gah, Вы правы. Первым параметром в __init__ должен быть сам. – Brandon

+0

Просто из интереса, почему бы не работать с вытаскиванием его из кваргов? Это не похоже, но мне любопытно, почему :) –

Смежные вопросы