2010-09-28 8 views
0

Y a-t-il une manière plus efficace ou plus propre de faire ce qui suit?Django - remplit un objet MultipleChoiceField via request.user.somechoice_set.all()

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 

C'est de remplir le nouveau formulaire avec des choix qui se rapportent à la request.user actuelle (qui est fixé sur l'instance qui est passé dans la forme). Y a-t-il un meilleur moyen?

Répondre

0

Utilisez un ModelMultipleChoiceField dans le formulaire et définissez queryset dans __init__().

+0

le problème est que 'ModelChoiceField' n'utilise pas un élément de sélection' multiple = multiple', n'est-ce pas? – orokusaki

+0

Mon mauvais, j'ai mal lu la question légèrement. Réponse mise à jour –