Найти - Пользователи
Полная версия: передать данные в форму
Начало » Django » передать данные в форму
1
куиуд
Я создаю вьюшку:
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 в моей форме?
куиуд
Дело в том, что мой класс использует этот параметр не для того, чтобы записать его в форму:

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-ов для нее.
playpauseandstop
в __init__ формы для виджета поля ‘strategy’ явно передайте полученное с данных формы значение ‘strategy’…

возможно это будет выглядеть как-то так:
self.fields['strategy'].widget.strategy = self.data['strategy']
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB