在ModelForm django中使用request.user初始化表单



我有这个模型表单

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)

这是我的观点

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 ?如何在表单中加入request.user初始化表单?

您已将user添加到__init__方法中,

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

因此,现在您只需在实例化表单时将用户作为第一个参数传递即可。

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

最新更新