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

JM *_*toc 1 django modelform

我有这个 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)
Run Code Online (Sandbox Code Playgroud)

这是我的看法

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)
Run Code Online (Sandbox Code Playgroud)

你如何通过 request.user 视图?你如何初始化其中的表单request.user

Ala*_*air 5

您已添加user__init__方法中,

def __init__(self, user, *args, **kwargs):
Run Code Online (Sandbox Code Playgroud)

所以现在您只需在实例化表单时将用户作为第一个参数传递。

form = ScheduleForm(request.user, request.POST or None)
Run Code Online (Sandbox Code Playgroud)