Объект 'CreateForm' не имеет атрибута 'user' при проверке формы - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь создать представление для добавления данных в мою базу данных через FormView.Однако я получаю эту ошибку без атрибута «пользователь».Я нашел, как избавиться от этого с помощью функционального представления здесь: MyModelForm 'объект не имеет атрибута' пользователя, использующего django , однако я все еще не понимаю, как сделать то же самое с моим основанным на классеview.

Вот мои файлы:

views.py:

class CreateView(FormView):
    template_name = 'restaurant/create.html'
    form_class = CreateForm
    success_url = ''

    @method_decorator(login_required)
    def form_valid(self, form):
        obj = form.save(commit=False)
        obj.owner = self.request.user
        obj.save()
        return super().form_valid(form)

forms.py:

class CreateForm(forms.Form):
    name = forms.CharField()
    category = forms.CharField()
    capacity = forms.IntegerField()
    description = forms.CharField(widget=forms.Textarea)

models.py:

from django.contrib.auth.models import User    
class Restaurant(models.Model):
        owner = models.ForeignKey(User, on_delete=models.CASCADE)
        name = models.CharField(max_length=200)
        category = models.CharField(max_length=200)
        description = models.TextField()
        capacity = models.IntegerField(default=0)

traceback: http://dpaste.com/2NTFS8H

Заранее спасибо!

1 Ответ

0 голосов
/ 11 сентября 2018

Вы не должны использовать method_decorator с form_valid методом. Измените свой взгляд на это:

@method_decorator(login_required, name='dispatch')
class CreateView(FormView):
    template_name = 'restaurant/create.html'
    form_class = CreateForm
    success_url = ''

    def form_valid(self, form):
        obj = form.save(commit=False)
        obj.owner = self.request.user
        obj.save()
        return super().form_valid(form)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...