python - Django:is_valid() 方法在与 ModelForm 一起使用时总是返回 false
问题描述
当我在 forms.py 中使用 forms.ModelForm 创建表单时,is_valid() 方法总是返回 false,这样我就可以保存从用户输入的表单获取的所有值。此代码适用于 forms.Form 但不适用于表单.ModelForm
表格.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})
推荐阅读
- kubernetes - Storm Kubernetes livenessProbe
- sql - Oracle 错误,在预期的地方找不到 FROM 关键字
- node.js - 将 Heroku (Node.js) 服务器迁移到 Amazon S3
- ios - 如何在编辑时更改 uitextfield leftView 图像 tintColor
- javascript - Bootstrap Foundation:在大屏幕上,网站将两个容器并排放置
- wordpress - 在 woocommerce 中使用产品 sku 作为永久链接 url
- angular - 关闭浏览器后如何恢复angular 6应用界面状态
- javascript - 如何遍历另一个数组对象(JSON)中的数组对象?
- xml - XML 数据绑定向导浮点数和定点数
- c# - .NetCore API 无法使用 MSI 从 Azure CLI 获取令牌