如何解决Django模型表格无法保存

问题描述

您好,我现在尝试提交未保存数据的表单时,尝试使用Django模型表单。我可以寻求帮助吗?我不知道该实现的错误之处:

下面的代码:models.py

class Videos(models.Model):

    lecturer = models.CharField(max_length=100,blank=False,null=False)
    module = models.CharField(max_length=100,null=False)
    video = models.FileField(upload_to='lectures/')
    date = models.DateField(default=datetime.datetime.Now())

下面的代码:form.py

class LectureVideos(forms.ModelForm):

    class Meta:
        model= Videos
        fields = '__all__'

以下代码:view.py

def LectureVideoForm(request):

    form = LectureVideos()


    if form.is_valid():
        form.save()
        return redirect('upload-success')



    return render(request,'forms.html',{'form':form})

以下代码:forms.html

<!DOCTYPE html>
<html lang="en">
<head>
    <Meta charset="UTF-8">
    <Meta name="viewport" content="width=device-width,initial-scale=1.0">
    <title>Upload</title>
</head>
<body>
    <form action="" method="POST" enctype="multipart/form-data">

        {% csrf_token %}
        {{form.as_p}}

        <input type="submit" value="Upload Video">
    </form>


</body>
</html>

解决方法

您从未将数据传递给表单。如果有POST请求,则将request.POST(和request.FILES)传递给以下形式:

def LectureVideoForm(request):
    if request.method == 'POST':
        form = LectureVideos(request.POST,request.FILES)
        if form.is_valid():
            form.save()
            return redirect('upload-success')
    else:
        form = LectureVideos()
    return render(request,'forms.html',{'form':form})

注意:函数通常以 snake_case 而不是 PerlCase 编写,因此 建议将函数重命名为lecture_video_form,而不是 LectureVideoForm