因此,我的目標是能夠過濾ModelForm中的ModelChoiceField查詢集,以僅包含request.user創建的地方。將request.user對象從Django中基於類的通用視圖發送到ModelForm
我的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?
非常感謝!完美的作品。 – Brian 2011-04-27 18:13:43
無法理解你如何做到這一點。 – 2013-07-21 02:34:29
我完成了這個例子,讓我知道如果它仍然不清楚 – 2013-07-22 11:57:48