从Django中基于类的通用视图将request.user对象发送到ModelForm
||
因此,我的目标是能够在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 \'
关于这个有什么想法吗?还是有人可以想到一种无需将我的请求传递给ModelForm即可在视图中过滤我的ModelChoiceField的方法?
没有找到相关结果
已邀请:
3 个回复
凸晴
方法从
中弹出键
,以防止其进入
方法: views.py:
forms.py:
席酱
哇,好辛苦!没有缩进支持!
缉康怪
的任何表单类的简洁明了。
更短: