2010-09-28 100 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