class AddRoleForm(forms.Form):
roles=forms.ModelMultipleChoiceField(queryset=Role.objects.all(),widget=forms.CheckboxSelectMultiple())
在模板中:
{{ form.roles }}
结果如下:
<ul>
<li><label for="id_roles_0"><input type="checkbox" value="1" name="roles" id="id_roles_0"> User object</label></li>
<li><label for="id_roles_1"><input type="checkbox" value="2" name="roles" id="id_roles_1"> User object</label></li>
</ul>
我想在每一行中显示角色的名称,并在chebox中获取角色的ID 像:
<ul>
<li><label for="id_roles_0"><input type="checkbox" value="100" name="roles" id="id_roles_0">boss</label></li>
<li><label for="id_roles_1"><input type="checkbox" value="101" name="roles" id="id_roles_1">employee</label></li>
</ul>
我该怎么办?
答案 0 :(得分:3)
检查你的模特'角色'
你需要添加
def __unicode__(self):
return self.name
答案 1 :(得分:0)
我认为你这篇文章可能会对你有所帮助。
查看:Django - Render CheckboxSelectMultiple() widget individually in template (manually)
答案 2 :(得分:0)
要更改value
参数,您必须执行以下步骤:
编写您自己的CheckboxInput
和重载render
函数。你必须改变
final_attrs['value'] = force_text(value)
这样的事情:
final_attrs['value'] = force_text(str(int(value) + 99))
可以无需更改即可复制其他部分。
编写您自己的CheckboxSelectMultiplue
和重载render
函数。你必须改变
cb = CheckboxInput(final_attrs, check_test=lambda value: value in str_values)
执行CheckboxInput
。
使用新的小部件而不是内置的。
注意:部分代码可能有所不同,因为它们可能取决于Django版本
关于User object
的问题:我不确定,但请尝试检查您的__unicode__
功能。