Итак, моя цель состоит в том, чтобы иметь возможность фильтровать набор запросов ModelChoiceField в моей модели ModelForm, чтобы включить только те места, которые создал request.user.
My 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?