Django表单:在正确提交表单后,我得到了这样一个信息:“我的;此字段为必填字段;

Django表单:在正确提交表单后,我得到了这样一个信息:“我的;此字段为必填字段;,django,Django,我有一个类别,并为每个类别中的用户添加了一个表单。 所以我有两个字段要填写,正确填写后我提交,但页面重新加载,我的数据库中没有显示任何内容。。。图像字段上只有一个错误:此字段是必需的。我真的不知道这里出了什么问题 class Picture(models.Model): catego = models.ForeignKey(Catego,on_delete=models.CASCADE,related_name="catego_pictures") user

我有一个类别,并为每个类别中的用户添加了一个表单。 所以我有两个字段要填写,正确填写后我提交,但页面重新加载,我的数据库中没有显示任何内容。。。图像字段上只有一个错误:此字段是必需的。我真的不知道这里出了什么问题

class Picture(models.Model):
    catego = models.ForeignKey(Catego,on_delete=models.CASCADE,related_name="catego_pictures")
    user = models.ForeignKey(User, blank=True, null=True,on_delete=models.CASCADE,related_name='user_pictures')
    image = models.ImageField(upload_to='nutriscore/')
    pictureoption = models.CharField(max_length=20,choices=Pictureoption.choices,default=Pictureoption.HOME,)
    publishing_date = models.DateField(auto_now_add=True)


class CreatePictureForm(forms.ModelForm):
    def __init__(self,*args,**kwargs):
        super(CreatePictureForm, self).__init__(*args,**kwargs)
        self.helper = FormHelper()
        self.helper.form_method="post"
        self.helper.layout = Layout(
            Field("image",css_class="single-input"),
            Field("pictureoption",css_class="single-input"),
            
        )
        
        self.helper.add_input(Submit('submit','Upload a pic',css_class="single-input textinput textInput form-control"))

    class Meta:
        model = Picture
        fields = [
            'image',
            'pictureoption',
        ]
    
def __str__(self):
    return self.catego.name
views.py

@login_required(login_url='/cooker/login')
def catego(request, slug):
    catego = Catego.objects.get(slug=slug)

    context = {
        'catego': catego
    }

    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = CreatePictureForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            form.instance.catego = self.object 
            form.instance.user = self.request.user
            form.save()
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

    else:
        form = CreatePictureForm()

    context['form'] = form # add `form` to the context
    return render(request, 'post_catego.html', context) 
这是答案

@login_required(login_url='/cooker/login')
def catego(request, slug):
    catego = Catego.objects.get(slug=slug)

    context = {
        'catego': catego
    }

    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        # create a form instance and populate it with data from the request:
        form = CreatePictureForm(request.POST, request.FILES)
        # check whether it's valid:
        if form.is_valid():
            form.instance.catego = catego
            form.instance.user = request.user
            form.save()
            return HttpResponseRedirect(request.META.get('HTTP_REFERER'))

    else:
        form = CreatePictureForm()

    context['form'] = form # add `form` to the context
    return render(request, 'post_catego.html', context)