Python Django:is_valid()方法在与ModelForm一起使用时始终返回false

Python Django:is_valid()方法在与ModelForm一起使用时始终返回false,python,django,forms,modelform,Python,Django,Forms,Modelform,当我在forms.py中使用forms.ModelForm创建表单时,is\u valid()方法总是返回false,这样我就可以保存从用户输入的表单中获取的所有值。此代码适用于forms.form,但不适用于forms.ModelForm forms.py from django import forms from .models import student class student_data(forms.ModelForm): name=forms.CharField(widg

当我在forms.py中使用forms.ModelForm创建表单时,is\u valid()方法总是返回false,这样我就可以保存从用户输入的表单中获取的所有值。此代码适用于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>

文件
{%csrf_令牌%}
{{form.as_p}}
加我

按以下方式更改代码,然后重试

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})

谢谢,现在我的代码正在运行,但表单正在创建一个名为id的额外输入标记。为什么?现在我明白了,如果我们想使用modelform,我们需要重定向用户。谢谢。