Как получить текущего пользователя в form.py def save (self)? - PullRequest
0 голосов
/ 28 ноября 2018

Как войти в систему пользователя def save(self, commit=True) на forms.py.Я попробовал self.request.user, но не работает ... self не имеет request: /

Кто-нибудь может мне помочь?

Ответы [ 3 ]

0 голосов
/ 28 ноября 2018

Вам необходимо передать запрос в метод сохранения формы.Попробуйте так:

Переопределите метод form_valid для передачи запроса в save метод формы:

class YourView(..):
     def form_valid(self, form):
         form.save(commit=True, request=request)
         return HttpResponseRedirect(self.get_success_url())

В вашей форме:

def save(self, commit=True, request=None):
   instance = super(YourFormClass, self).save(commit=False)
   user = request.user
   # rest of your logic
   instance.save()
   return instance
0 голосов
/ 28 ноября 2018

Используйте функцию form_valid для назначения пользователя переменной.

class PutYourClassNameHere(generic.CreateView):
    # your code here
    ...

    def form_valid(self, form):
        form.instance.user = self.request.user
        return super(PutYourClassNameHere, self).form_valid(form)
0 голосов
/ 28 ноября 2018

Это потому, что запрос не передается в метод save () вашей формы.Поэтому в основном вы должны переопределить get_form_kwargs метод формы в представлениях и передать ему request объект.

def get_form_kwargs(self):
    kw = super(MyModelCreateView, self).get_form_kwargs()
    kw['request'] = self.request
    return kw
...