2017-11-02 18 views
0

私はこれのModelForm初期化フォーム

class ScheduleForm(forms.ModelForm): 

    class Meta: 
     model = Schedule 
     fields = ['name', 'involved_people',] 

    def __init__(self, user, *args, **kwargs): 
     super(ScheduleForm, self).__init__(*args, **kwargs) 
     self.fields['involved_people'].queryset = Profile.objects.exclude(user=user) 

を持っているこれは、ビューでrequest.userを渡すにはどうすればよい

def create_schedule(request): 
    form = ScheduleForm(request.POST or None) 
    schedules = Schedule.objects.all().order_by('deadline_date') 

    if form.is_valid(): 
     schedule = form.save(commit=False) 
     schedule.save() 

     messages.success(request, "Schedule added successfully!") 
     return render(request, 'schedule/index.html', {'schedules': schedules}) 

    context = {'form': form} 

    return render(request, 'schedule/create_schedule.html', context) 

私の見解ですか? フォームをrequest.userで初期化するにはどうすればよいですか?

+0

ページが読み込まれたときにフォームを事前に入力しますか? – hansTheFranz

+0

私は 'filled_people'をフィルタリングしたいだけです –

答えて

1

あなたは

def __init__(self, user, *args, **kwargs): 

は、今あなたがちょうどあなたがあなたのフォームをインスタンス化し、最初の引数としてユーザに渡す__init__方法にuserを追加しました。

form = ScheduleForm(request.user, request.POST or None)