2010-09-28 80 views
0

是否有更高效或更简洁的方式来执行以下操作?Django - 通过request.user.somechoice_set.all()填充MultipleChoiceField()

class SpamForm(ModelForm): 
    some_choices = fields.MultipleChoiceField() 

    def __init__(self, *args, **kwargs): 
     super(SpamForm, self).__init__(*args, **kwargs) 
     self.fields['some_choices'].choices = [[choice.pk, choice.description] for choice in self.instance.user.somechoice_set.all()] 

    class Meta: 
     model = Spam 

这是为了填充,涉及到当前request.user(这是则传递到表单中的实例设置)选择新的形式。有没有更好的办法?

回答

0

在表格中使用ModelMultipleChoiceField并将其queryset设置为__init__()

+0

问题是'ModelChoiceField'没有使用'multiple = multiple' select元素,对吧? – orokusaki 2010-09-29 03:48:37

+0

我的不好,我误解了这个问题。答案已更新。 – 2010-09-29 06:57:40