给定一个表单,我想使用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'
。
我怀疑我的布局没有正确实例化,但无法从这里移动。
答案 0 :(得分:1)
自己解决了。对此的解决方案是在布局结束时有一个额外的逗号。正确的解决方案是:
self.helper.layout = Layout(
Div(
'username',
'password',
css_class="col-md-6"
),
Div(
'name',
'age',
css_class="col-md-4"
),
)
删除逗号a最后一行。