Django multipleselect选定数据

Django multipleselect选定数据,django,forms,Django,Forms,我试着解决这个问题已经有一段时间了,但我似乎无法为multipleselect设置选定的值。我得到的是: class GroupUsersForm(forms.Form): users = forms.MultipleChoiceField() def __init__(self, *args, **kwargs): super(GroupUsersForm, self).__init__(*args, **kwargs) if kwargs.h

我试着解决这个问题已经有一段时间了,但我似乎无法为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都是查询集(

在一个测试案例中,它们甚至是相同的。 没有显示选定的选项

我尝试自己手动设置初始值,以基于对象id的列表、传递单个id、传递(id、用户名)元组等等…尝试使用不同的小部件,但所有小部件都显示所有选项,但没有一个被选中

我做错了什么


Alan

尝试设置users字段的choices属性。初始dict中“users”的值应该是用户选择的任何键的列表。例如,如果

self.fields['users'].choices = (
                               ('username1','Firstname Lastname'),
                               ('username2','Firstname Lastname'),
                               ('username3','Firstname Lastname'),
                               )
首字母应该是
['username1','username3']

然后将表单实例化和
\uuuuu init\uuuu
更改为以下内容:

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

好的。基本上,正如我发现的,我做错了的事情是我没有以正确的格式指定初始数据。我想你需要传递与初始数据相同类型的信息作为选择。
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