Django - 通过request.user.somechoice_set.all()填充MultipleChoiceField

时间:2010-09-28 21:39:44

标签: django django-models django-forms

是否有更有效或更清洁的方法来执行以下操作?

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相关的选项(在传递给表单的实例上设置)。还有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

在表单中使用ModelMultipleChoiceField并在queryset中设置__init__()