Отправка объекта request.user в ModelForm из общего представления на основе классов в Django

Итак, Моя цель - иметь возможность фильтровать набор запросов ModelChoiceField в моей ModelForm, чтобы включать только те места, которые были созданы request.user.

Моя 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?

15
задан Brian 27 April 2011 в 15:01
поделиться