猿问

“CreateForm”对象在表单验证上没有​​“user”属性

我正在尝试创建一个视图,以便通过 FormView 将数据添加到我的数据库中。但是,我收到此无属性“用户”错误。我在这里找到了如何使用基于函数的视图摆脱它:MyModelForm' 对象没有属性 'user using django,但是我仍然不知道如何使用我的基于类的视图来做同样的事情。


这是我的文件:


视图.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)

形式.py:


class CreateForm(forms.Form):

    name = forms.CharField()

    category = forms.CharField()

    capacity = forms.IntegerField()

    description = forms.CharField(widget=forms.Textarea)

模型.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)

回溯:http : //dpaste.com/2NTFS8H


临摹微笑
浏览 119回答 1
1回答

慕桂英546537

你不应该使用method_decoratorwithform_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)
随时随地看视频慕课网APP

相关分类

Python
我要回答