2011-08-29 47 views
0

我一直在試圖破解這個螺母一段時間,但我不能似乎能夠爲multipleselect設置選擇的值。我所擁有的是:Django的multipleselect選擇數據

class GroupUsersForm(forms.Form): 
    users = forms.MultipleChoiceField() 

    def __init__(self, *args, **kwargs): 
     super(GroupUsersForm, self).__init__(*args, **kwargs) 
     if kwargs.has_key('initial'): 
      self.selected = kwargs['initial']['users'] 
      self.choices = kwargs['initial']['all'] 
     self.fields[self.get_field_name()] = self.get_users_field() 

    def get_users_field(self): 
     field_class = forms.MultipleChoiceField 
     field = field_class(
      label=_(u"users"), 
      choices = self.get_field_choices(), 
      widget = FilteredSelectMultiple(_(u"users"), is_stacked= False), 
      #initial = self.get_field_initial(), 
      required= False 
     ) 
     return field 

    def get_field_name(self): 
     return 'users' 

    def get_field_choices(self): 
     choices = [(p.id, p.username) for p in self.choices]  
     return choices 

    def get_field_initial(self): 
     selected = [(p.id, p.username) for p in self.selected] 
     return selected 

,我開始會這樣:

uform = GroupUsersForm(initial = {'all': users, 'users':u, 'group':g,}) 

兩個用戶和u查詢集(

users = get_users_with_perms(a).order_by('username', 'last_name', 'first_name') 

u = User.objects.filter(Q(groups = g)).order_by('username', 'last_name', 'first_name')) 

在一個測試用例甚至是相同的。 沒有選擇的選擇出現了。

我嘗試設置自己手冊冊的初始值y以列表基於對象的ID,通過單一的ID,通過(ID,用戶名)元組等等......用不同的部件試過,但所有小工具顯示所有選項,但他們沒有被選中。

我在做什麼錯?

艾倫

回答

1

嘗試爲用戶設置字段選擇屬性。 「用戶」的初始字典的值應該是一個列表任何的按鍵是用戶的選擇。例如,如果

self.fields['users'].choices = (
           ('username1','Firstname Lastname'), 
           ('username2','Firstname Lastname'), 
           ('username3','Firstname Lastname'), 
           ) 

最初應該是['username1', 'username3']

然後改變你的形式實例化和__init__以下幾點:

uform = GroupUsersForm(users, initial = {'users':u,}) 

def __init__(self, user_choices, *args, **kwargs): 
    super(GroupUsersForm, self).__init__(*args, **kwargs) 
    self.fields['users'].choices = user_choices 
+0

好吧。基本上,我想通了,我做錯的事情是,我沒有指定正確的格式初始數據。我在想,你需要通過同一類型作爲初始數據的選擇信息的。 –