因此,我的目标是能够在我的 ModelForm 中过滤 ModelChoiceField 查询集,以仅包含 request.user 创建的 Places。
我的 ModelForm 很简单:
class PlaceEventForm(models.ModelForm):
class Meta:
model = Event
我希望能够添加如下内容:
def __init__(self, *args, **kwargs):
super(PlaceEventForm, self).__init__(*args, **kwargs)
self.fields['place'].queryset = Place.objects.filter(created_by=request.user)
但是,我似乎找不到在 ModelForm 中访问请求的方法。
我的观点是这样的:
class PlaceEventFormView(CreateView):
form_class = PlaceEventForm
template_name = 'events/event_create.html'
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(PlaceEventFormView, self).dispatch(*args, **kwargs)
我不确定这是否接近我应该做的,但我尝试了:
def get_form_kwargs(self):
kwargs = super(PlaceEventFormView, self).get_form_kwargs()
kwargs.update({'place_user': self.request.user})
return kwargs
但我得到了错误:init()得到了一个意外的关键字参数'place_user'
关于这个有什么想法吗?或者任何人都可以想出一种方法来过滤视图中的 ModelChoiceField 而无需将我的请求传递给 ModelForm?