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接收请求,就对提交的数据做校验,校验不通过直接返回错误, ...
随机推荐
- leetcode mock interview-two sum II
package com.company; import java.util.LinkedList; import java.util.List; public class Main { public ...
- EChart处理三维数据做图表、多维legend图例处理
处理三维数据做图表,比如返回的数据就是一个个list,list里面某几个数据同属于一个维度,项目中的实例效果如下: 上面的khfx会有多个,比如db1.db2.db3等,下面的那些数据也会变化,目前需 ...
- ActiveMQ的环境搭建及使用
一:环境搭建 ActiveMQ官网下载mq在windows上的安装包:http://activemq.apache.org/,解压到某个磁盘下. 运行要环境条件:jdk安装1.8,(本人这里安装版本) ...
- html5-video视频播放
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/ ...
- PostgreSQL流复制参数max_wal_senders详解
转自:http://my.oschina.net/Kenyon/blog/152234PostgreSQL 9.2.4 主机:192.25.10.76 从机:192.25.10.71 做postgre ...
- shell中的字符串操作
SHELL字符串操作 bash Shell提供了多种字符串处理的命令: awk命令 expr命令 字符串长度 ${#..} expr length awk的length(s) 实例: string=& ...
- SQL语言 之 SQL概述
SQL(Structured Query Language)语言,自1987年6月被国际标准化组织采纳为国际标准,SQL语言成为关系数据库的标准语言. SQL语言是关系数据库操作的基础语言,将数据查询 ...
- Android应用更新自动检测下载
由于Android项目开源所致,市面上出现了N多安卓软件市场.为了让我们开发的软件有更多的用户使用,我们需要向N多市场发布,软件升级后,我们也必须到安卓市场上进行更新,给我们增加了工作量.因此我们有必 ...
- async [ə'zɪŋk] 函数
ES7提供了async函数,使得异步操作变得更加方便.async函数是什么?一句话,async函数就是Generator函数的语法糖. 例1: var asyncFun = async functio ...
- vue的全家桶
自定义指令 <div v-demo="{ color: 'white', text: 'hello!' }"></div> Vue.directive('d ...