Уведомления

Группа в Telegram: @pythonsu

#1 Май 9, 2008 19:49:43

куиуд
От:
Зарегистрирован: 2008-04-02
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

передать данные в форму

Я создаю вьюшку:
def strategy(request):
“Allow to edit strategy type”
profile = request.user.get_profile()
if request.POST:
form = StrategyForm(request.POST)
if form.is_valid():
profile.strategy = form.clean_data
profile.save()
return HttpResponseRedirect('/strategy_details/')
else:
form = StrategyForm({'strategy': profile.strategy})
return render_to_response('strategy.html', {'form': form, ‘user_profile’: profile})

и форму:
class StrategyForm(WapForm):
strategy = forms.ChoiceField(label = (“”), choices = ((1, ‘Offensive’), (0, ‘Defensive’),), widget = RadioSelect_strategy(strategy))

Мне нужно передавать параметр strategy форму, чтобы использовать его в классе RadioSelect_strategy, который был написан мной. Как я могу получть параметр strategy в моей форме?



Отредактировано (Май 9, 2008 19:53:03)

Офлайн

#2 Май 10, 2008 09:49:33

куиуд
От:
Зарегистрирован: 2008-04-02
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

передать данные в форму

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

class RadioFieldRenderer_strategy(RadioFieldRenderer):
“Renders list of separated RadioButtons”
def __init__(self, strategy, *args, **kwargs):
super(RadioFieldRenderer_strategy, self).__init__(*args, **kwargs)
self.choices = ((1, _('Offensive')), (0, _('Defensive')), )
self.strategy = strategy


def __unicode__(self):
“Outputs a <ul> for this set of radio fields.”
if self.strategy == 1:
return ‘<tr><td class=“bold_text”>%s</td><td class=“bold_text”>+10%% attack <br/>+15%% injury</td></tr><tr><td class=“inactive_text”>%s</td><td class=“inactive_text”>+10%% defence <br/>-15%% injury</td></tr>’ % (self, self)
else:
return ‘<tr><td class=“inactive_text”>%s</td><td class=“inactive_text”>+10%% attack <br/>+15%% injury</td></tr><tr><td class=“bold_text”>%s</td><td class=“bold_text”>+10%% defence <br/>-15%% injury</td></tr>’ % (self, self)

class RadioSelect_strategy(Select):
def __init__(self, strategy = 1, *args, **kwargs):
super(RadioSelect_strategy, self).__init__(*args, **kwargs)
self.strategy = strategy

def render(self, name, value, attrs = None, choices = ()):
“Returns a RadioFieldRenderer instance rather than a Unicode string.”
if value is None: value = ''
str_value = smart_unicode(value) # Normalize to string.
attrs = attrs or {}
return RadioFieldRenderer_strategy( self.strategy, name, str_value, attrs, list(chain(self.choices, choices)),)

а для того, чтобы изменить отборажение RadioButtoon-ов для нее.



Офлайн

#3 Май 13, 2008 08:54:47

playpauseandstop
От:
Зарегистрирован: 2007-10-31
Сообщения: 77
Репутация: +  0  -
Профиль   Отправить e-mail  

передать данные в форму

в __init__ формы для виджета поля ‘strategy’ явно передайте полученное с данных формы значение ‘strategy’…

возможно это будет выглядеть как-то так:

self.fields['strategy'].widget.strategy = self.data['strategy']



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version