'tuple'对象没有使用Django Crispy Forms的属性'fields'

时间:2016-04-29 14:46:29

标签: django-crispy-forms

给定一个表单,我想使用django-crispy-forms将Div中的一些字段包装起来。

class SignupForm(forms.Form):
  def __init__(self, *args, **kwargs):
    super(SignupForm, self).__init__(*args, **kwargs)
    self.helper = FormHelper()
    self.helper.form_method = 'POST'
    self.helper.form_action = ''
    self.helper.add_input(Submit('submit', 'Create Account', css_class="btn-success"))
    self.helper.layout = Layout(
        Div(
            'username',
            'password',
            css_class="col-md-6"
        ),
        Div(
            'name',
            'age',
            css_class="col-md-4"
        ),
    ),
  username=forms.CharField(max_length=128)
  password=forms.CharField(max_length=128, widget=forms.PasswordInput())
  name=forms.CharField(max_length=128)
  age=forms.IntegerField(required=False)

但是,在视图中,当我使用{% crispy form %}时,它会向我显示错误'tuple' object has no attribute 'fields'

我怀疑我的布局没有正确实例化,但无法从这里移动。

1 个答案:

答案 0 :(得分:1)

自己解决了。对此的解决方案是在布局结束时有一个额外的逗号。正确的解决方案是:

self.helper.layout = Layout(
    Div(
        'username',
        'password',
        css_class="col-md-6"
    ),
    Div(
        'name',
        'age',
        css_class="col-md-4"
    ),
)

删除逗号a最后一行。