Передача пользователя, запрос к формам - PullRequest
15 голосов
/ 13 июня 2011

Как мне передать объект пользователя или запрос в мою форму для проверки?

Например, я хочу иметь возможность сделать что-то вроде этого -

class Form(forms.Form):
    ...
    def clean(self)
        user = request.user   # how to get request.user here?
        user = User           # how to pass the actual User object?

Спасибовы.

1 Ответ

32 голосов
/ 13 июня 2011

Просто передайте его в конструктор и сохраните как переменную экземпляра:

class MyForm(forms.Form):
    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop("request")
        super(MyForm, self).__init__(*args, **kwargs)

    def clean(self):
        print self.request.user
        ...

На ваш взгляд:

form = MyForm(..., request=request)

И если используется представление на основе классов (в данном примере CreateView):

class MyCreateView(CreateView):

    ... 

    def get_form_kwargs(self):
        kwargs = super(MyCreateView, self).get_form_kwargs()
        kwargs.update({'request': self.request})
        return kwargs
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...