在 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)
我有这个模型
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)