django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息
django中ModelForm学习系列一~save方法
Model代码
from django.db import models
# Create your models here. class ProjectInformation(models.Model):
"""
项目基本信息
""" ResearchClassify = (
('药物类','药物类'),
('器械类','器械类'),
('试剂类', '试剂类'),
('临床研究学', '临床研究学'),
('纵向课题', '纵向课题'),
('废止合同', '废止合同'),
('结题项目', '结题项目'),
) protype = models.CharField(max_length=30,verbose_name='项目类型')
proname = models.CharField(max_length=50,verbose_name='项目名称(中文)')
proenname = models.CharField(max_length=50,verbose_name='项目名称(英文)')
studytype = models.CharField(max_length=30, verbose_name='研究分类', choices=ResearchClassify)
clinicalnum = models.CharField(max_length=30, verbose_name='临床试验备案号')
leaderunit = models.CharField(max_length=5, choices=(('是', '是'), ('否', '否')),verbose_name='本院是否为组长单位') class Meta:
verbose_name = '项目名称(中文)'
verbose_name_plural = verbose_name def __str__(self):
return self.proname
Form代码
from django import forms
from django.forms import ModelForm
from .models import ProjectInformation class ProjectInformationForm(ModelForm):
class Meta:
model = ProjectInformation
localized_fields = ('__all__') exclude = ['add_time','filetype',] widgets = {}
error_messages = {
'protype': {
'required':'这是个必填项目', #生成错误信息
},
}
View代码
def MyProjectSave(request):
"""
保存表单信息
""" form = ProjectInformationForm(request.POST) if request.method == 'POST': if form.is_valid(): all_data = form.clean()
form.save()
else:
error = form.errors #错误信息
return render(request, 'forms.html', {'form': form, 'error': error}) return render(request, 'forms.html', {'form': form})
# return HttpResponseRedirect('/myprojectsave/')
HTML 代码
<form id = '' name='' action="{% url 'myprojectsave' %}" method="post" autocomplete="off">
<div class="modal-body">
{% for field in form %}
{{ field.errors }}
<div id = form_row class="row">
<div class="form-group">
<div class="col-lg-2 form_span chart-container">
<span>{{ field.label_tag }}</span>
</div>
<div class="col-lg-10 form_span chart-container">
{{ field }}
</div>
</div>
</div>
{% endfor %}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">关闭
</button>
<button type="submit" id = "jsLoginBtn" class="btn btn-primary">
提交更改
</button>
</div>
{% csrf_token %}
</form>
根据model form生成空表单或包含数据的表单
Model代码
class CeShi(models.Model):
realname = models.CharField(max_length=10,verbose_name='姓名',default='')
nickname = models.EmailField(max_length=10, verbose_name='昵称', default='')
Form代码
class IndexForm(ModelForm):
class Meta:
model = Ceshi
localized_fields = ('__all__') # exclude = ['active', 'is_staff', 'first_name', 'is_active', 'date_joined', 'password', 'username', 'email',
# 'is_staff', 'last_login', 'password', 'last_name', 'date_joined', 'is_superuser'] fields = ['realname','company','company_type','project_role','company_person',
'registration_number','department','title','education','gender','gcp',
'contact_person','mobile','address','introduction'] widgets = {} #可以自定义widgets属性包括id,class
#widgets = {
# 'username': forms.TextInput(
# attrs={
# 'class': 'form-control',
# 'placeholder': '用户名',
# 'id': 'user_name',
# 'required': '请填入用户名',
# }),
# 'password': forms.TextInput(
# attrs={
# 'class': 'form-control',
# 'placeholder':'密码',
# 'id':'pass_word',
# 'required':'请填入密码',
# 'type':'password',
# })
#}
View代码
form = IndexForm(auto_id = False) #生成空表单
# user = get_object_or_404(CeShi, username=username)
# form = IndexForm(instance=user)
#CeShi代表数据库,username代表字段建议用id,IndexForm代表form字段
print(form)
return render(request, 'index.html', {'form':form})
HTML代码
<form action="{% url 'usermessage' username %}" method="post" autocomplete="off">
{% for field in form %}
{{ field.errors }}
<div class="row">
<div class="form-group">
<div class="col-lg-2 form_span chart-container">
<span>{{ field.label_tag }}</span></div>
<div class="col-lg-10 form_span chart-container">{{ field }}</div></div>
</div>
{% endfor %}
<input class="btn btn-green" id="jsLoginBtn" type="submit" value="提交 > " />
{% csrf_token %}
</form>
自动保存用户名

自动保存时间:
created_date = models.DateField(auto_now=True,null=True, blank=True,verbose_name='创建日期')
django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息的更多相关文章
- Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法
Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...
- Django:form.save()方法
参考:https://blog.csdn.net/it_yuan/article/details/53580756 背景: 之前的博客是不支持上传文章缩略图的,后来新增了此功能,但是发现修改老的文章时 ...
- Django中ModelForm应用
Django中ModelForm的应用 在传统中Form提交的POST的数据在服务器端获取时将不得不一一获取并验证数据的可靠性,但是使用django提供的Form时可简化该过程并提供相应的验证,同时D ...
- Django中Model-Form验证
Django中Model-Form验证 class UserType(models.Model): caption=models.CharField(max_length=32) class User ...
- 【转载】C#中使用Insert方法往ArrayList集合指定索引位置插入新数据
ArrayList集合是C#中的一个非泛型的集合类,是弱数据类型的集合类,可以使用ArrayList集合变量来存储集合元素信息,在ArrayList集合操作过程中,可以使用ArrayList集合类的I ...
- 【Excle数据透视表】如何得到数据透视表中某个汇总行的明细数据
例如: 现在想得到"北京 汇总"的明细数据,该怎么处理呢? 步骤 右键数据透视表任意单元格→数据透视表选项→启用显示明细数据→确定→单击"北京 汇总"行最后一个 ...
- Django 中 ModelForm 的使用
定义 ModelForm 定制 ModelForm Meta 在 Form 中另外定义 Field 值得一提的一些 Field 转化 AutoField BooleanField ForeignKey ...
- Django create和save方法
Django的模型(Model)的本质是类,并不是一个具体的对象(Object).当你设计好模型后,你就可以对Model进行实例化从而创建一个一个具体的对象.Django对于创建对象提供了2种不同的s ...
- Django model重写save方法及update踩坑记录
一个非常实用的小方法 试想一下,Django中如果我们想对保存进数据库的数据做校验,有哪些实现的方法? 我们可以在view中去处理,每当view接收请求,就对提交的数据做校验,校验不通过直接返回错误, ...
随机推荐
- 二十道经典C#面试题
1.在下面的代码中,如何引用命名空间fabulous中的great? namespace fabulous{// code in fabulous namespace}namespace super{ ...
- 免费的.net云平台appharbor.com
支持Mysql,MSSQL2008R2免费的都是20MB 提供codeplex,GitHub,BitBucket部署到appharbor.com 也可以使用Git来部署应用,但不支持FTP 可以一键安 ...
- MySQL插值语句
insert into Daywork( fdayworkId, fuserId, fdate, fhours, fclaimdate ) values ( 2709, '1@2.3', '2013- ...
- (剑指Offer)面试题48:不能被继承的类
题目: 写一个不能被继承的类 思路: 1.把构造函数设为私有函数 在C++中子类的构造函数会自动调用父类的构造函数,子类的析构函数也会自动调用父类的构造函数,要想一个类不能被继承,只要把它的构造函数和 ...
- 深入一点 让细节帮你和Fragment更熟络
有一段时间没有写博客了.作为2017年的第一篇,初衷起始于前段时间一个接触安卓开发还不算太长时间的朋友聊到的一个问题: "假设,想要对一个Fragment每次在隐藏/显示之间做状态切换时进行 ...
- python中各类时间的计算
python获取当前系统时间: nowTime=time.localtime() 获取当前系统日期: nowDate=datetime.datetime(nowTime[0],nowTime[1],n ...
- C#应用视频教程1.3 Socket通信客户端完善
我们先把前面的代码封装成一个完整的类,因为跟网络相关的方法并不一定是建立socket的服务器和客户端,所以还是应该把两个分开,比如获取本机IP,修改本机IP,PING远程主机这些事情应该放在一个单独的 ...
- C#基础视频教程5.3 如何编写简单的超级热键
跟前面一章讲解计算器一样,到最后一小节,我们总是要把代码规整好,让整个程序显得非常简洁,先做个文件夹把我们自定义的类库都放进去 然后我们开始整理Form1里面的代码,为了实现超级热键的功能,我们应 ...
- Python dict的特点
dict的特点 1:查找速度快 2:浪费空间 3:key不可以重复,且不可变 4:数据无序排放 dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样.而list的 ...
- cookie 封装
1.代码 ;(function (factory) { var registeredInModuleLoader; if (typeof define === 'function' && ...