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

Initialize form with request.user in a ModelForm django

我有这个模型

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)