2013-04-23 53 views
1
class AddRoleForm(forms.Form): 
    roles=forms.ModelMultipleChoiceField(queryset=Role.objects.all(),widget=forms.CheckboxSelectMultiple()) 

Django的ModelMultipleChoiceField显示:在模板的模板

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

我想在每行显示角色的名称,并得到该角色的ID在che盒 like:

<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
  • 要改变value参数,您需要做的那些步骤:

    1. 写自己的CheckboxInput和过载render功能。你必须改变

      final_attrs['value'] = force_text(value) 
      

      到类似的东西:

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

      其他部分可以在不改变被复制。

    2. 写你自己的CheckboxSelectMultiplue和超载render功能。你必须改变

      你的执行CheckboxInput

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

    注:代码的某些部分可能是不同的,因为他们可以依赖的Django的版本

  • 关于问题与User object:我不知道,但尝试检查您的__unicode__功能。

3

检查你的模型 '角色'

你需要添加

def __unicode__(self): 
    return self.name 
+0

重写__str__帮助我。 – Scit 2015-12-17 08:13:59