2017-02-23 9 views
1

私は、タイトルとユーザーのリストを要求するフォームを持っています。私の問題は、データベースにすべてのユーザーを表示したいが、現在の認証されたユーザーを除外したいということです。私はいくつかの選択肢を試しましたが、それは正しくありませんでした。私たちを手伝ってくれますか?ありがとうございます:動的クエリーセットをフォームに変換

from django import forms 

class FormCal(forms.Form): 

titulo = forms.CharField(max_length=100) 

usuarios = forms.ModelMultipleChoiceField(queryset=User.objects.all(), widget=forms.CheckboxSelectMultiple(), required=False) 

答えて

1

フォームオブジェクトの__init__にアクセスできます。そこのクエリセットを動的に調整することができます。

class FormCal(forms.Form): 

    titulo = forms.CharField(max_length=100) 

    def __init__(self, *args, **kwargs): 
     self.request = kwargs.pop('request', None) 
     super(FormCal, self).__init__(*args, **kwargs) 
     # exclude logged in user from queryset 
     usuarios_queryset = User.objects.all().exclude(username=self.request.user.username) 
     # add field to form 
     self.fields['usuarios'] = forms.ModelMultipleChoiceField(
      queryset=usuarios_queryset, 
      widget=forms.CheckboxSelectMultiple(), 
      required=False) 
関連する問題