脆弱表单忽略了单选按钮的初始值

时间:2013-11-12 02:42:04

标签: django django-forms django-crispy-forms

我正在尝试在脆弱的表格InlineRadio字段中有条件地设置初始值,但我会被忽略。

我设置了initial值,如下所示:

class CustomWizardForm3(ModelForm):
  def __init__(self, user, *args, **kwargs):
    self.helper = FormHelper()
    self.helper.layout = Layout(
        Fieldset("",
            Div(ImageInlineRadios('sleeve_length'), css_class='span8 clearfix'),
            Div(
                CustomStyleDiv('armhole_edging_stitch', 'armhole_edging_height'),
                css_class="row-fluid")
        )
    ) 

    super(CustomWizardForm3, self).__init__(user, HELP_TEXT, *args, **kwargs)

    if self.instance.is_vest():
        self.fields['sleeve_length'].initial = DC.SLEEVE_VEST

  class Meta:
    model = IndividualDesign
    fields = ('armhole_edging_stitch', 'armhole_edging_height', 'sleeve_length',)

在模型中,sleeve_length被声明为:

sleeve_length= models.CharField(
    max_length = 20,
    choices = DC.SLEEVE_LENGTH_CHOICES,
    null = True, 
    blank = True)

我在调试器中逐步完成了它,initial属性设置为我所期望的。但是当生成单选按钮时,不会检查任何内容。是什么赋予了? Crispy和/或Django Forms让我很生气。

ETA:ImageInlineRadios是标准脆皮的简单子类。

类ImageInlineRadios(InlineRadios):

def __init__(self, *args, **kwargs):
    self.span_class = kwargs.pop('span_class', 2)
    super(ImageInlineRadios, self).__init__(*args, **kwargs)

template = 'radio_buttons.html'

def render(self, form, form_style, context, template_pack='bootstrap'):
    import pdb; pdb.set_trace()
    context.update({'inline_class': 'inline', 
                    'images': 'none', 
                    'span_class':self.span_class})
    return super(ImageInlineRadios, self).render(form, form_style, context)

在radio_buttons.html模板文件中,我们有:

<input type="radio"
   {% if choice.0|stringformat:"s" == field.value|stringformat:"s" %} checked="checked"{% endif %} 

crispy没有从field.value设置initial吗?那部分看起来像是带有脆弱的radioselect.html模板中的内容,但如果还有其他我应该测试的内容,我很想知道它是什么。

0 个答案:

没有答案