Django:is_valid() 方法在与 ModelForm 一起使用时始终为 return false

Django: is_valid() method is always return false when use with ModelForm

当我在 forms.py 中使用 forms.ModelForm 创建表单时,

is_valid() 方法总是返回 false,这样我就可以保存从由 [ 输入的表单获取的所有值=28=] 代码适用于 forms.Form 但不适用于 forms.ModelForm

forms.py

from django import forms
from .models import student

class student_data(forms.ModelForm):
    name=forms.CharField(widget=forms.TextInput,max_length=20)
    id=forms.IntegerField()
    address=forms.CharField(widget=forms.TextInput,max_length=50)

    class Meta():
        model=student
        fields=['name','stu_id','address']

这里是models.py

from django.db import models

# Create your models here.

class student(models.Model):
    name=models.CharField(max_length=20)
    stu_id=models.IntegerField()
    address=models.CharField(max_length=60)

    class Meta:
        db_table='student'

这里是views.py

from django.shortcuts import render
from django.http import HttpResponse
from .models import student
from .forms import student_data

def my_data(request):
    stu1_name=''
    stu2_name=''
    stu_name=''
    myform=student_data(request.POST)
    if (request.method=="POST" and myform.is_valid()):
        stu_name=myform.cleaned_data['name']
        stu1_name=myform.cleaned_data['id']
        stu2_name=myform.cleaned_data['address']
        myform.save()
    else:
        myform=student_data
    return render(request,'show.html',{'student':stu_name,'id':stu1_name,'address':stu2_name})

html 表单文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div>
        <form name="form" action="/payment/show/" method="POST">
            {% csrf_token %}
            {{form.as_p}}
            <button type="submit">Add Me</button>
        </form>
    </div>
</body>
</html>

如下更改代码并尝试

def my_data(request):
    if request.method == "POST":
        myform = student_data(request.POST)
        if myform.is_valid():
            myform.save()
            return redirect('/')
    else:
        myform = student_data()
    return render(request, '----.html', {'myform': myform})