2013-04-23 54 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