【发布时间】:2020-07-08 01:56:14
【问题描述】:
is_valid() 当我在 forms.py 中使用 forms.ModelForm 创建表单时,is_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>
【问题讨论】:
标签: python django forms modelform