2
class AddRoleForm(forms.Form):
     roles=forms.ModelMultipleChoiceField(queryset=Role.objects.all(),widget=forms.CheckboxSelectMultiple())

在模板中:</p>

{{ 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>

我应该怎么办?

4

3 回答 3

3

检查您的模型“角色”

你需要添加

def __unicode__(self):
    return self.name
于 2014-04-24T07:06:17.523 回答
0

我想你这篇文章可能会对你有所帮助。

看看:Django - 在模板中单独渲染 CheckboxSelectMultiple() 小部件(手动)

于 2013-04-23T14:54:55.703 回答
0
  • 要更改value参数,您必须执行以下步骤:

    1. 编写自己的CheckboxInput重载render函数。你必须改变

      final_attrs['value'] = force_text(value)
      

      像这样的东西:

      final_attrs['value'] = force_text(str(int(value) + 99))
      

      其他部分可以复制而无需更改。

    2. 编写自己的CheckboxSelectMultiplue重载render函数。你必须改变

      cb = CheckboxInput(final_attrs, check_test=lambda value: value in str_values)
      

      到您的CheckboxInput.

    3. 使用您的新小部件而不是内置小部件。

    注意:部分代码可能会有所不同,因为它们可能取决于 Django 版本

  • 关于问题User object:我不确定,但请尝试检查您的__unicode__功能。

于 2013-04-23T15:23:20.310 回答