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方法 以及快速生成空表单或包含数据的表单 包含错误信息的更多相关文章

  1. Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法

    Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...

  2. Django:form.save()方法

    参考:https://blog.csdn.net/it_yuan/article/details/53580756 背景: 之前的博客是不支持上传文章缩略图的,后来新增了此功能,但是发现修改老的文章时 ...

  3. Django中ModelForm应用

    Django中ModelForm的应用 在传统中Form提交的POST的数据在服务器端获取时将不得不一一获取并验证数据的可靠性,但是使用django提供的Form时可简化该过程并提供相应的验证,同时D ...

  4. Django中Model-Form验证

    Django中Model-Form验证 class UserType(models.Model): caption=models.CharField(max_length=32) class User ...

  5. 【转载】C#中使用Insert方法往ArrayList集合指定索引位置插入新数据

    ArrayList集合是C#中的一个非泛型的集合类,是弱数据类型的集合类,可以使用ArrayList集合变量来存储集合元素信息,在ArrayList集合操作过程中,可以使用ArrayList集合类的I ...

  6. 【Excle数据透视表】如何得到数据透视表中某个汇总行的明细数据

    例如: 现在想得到"北京 汇总"的明细数据,该怎么处理呢? 步骤 右键数据透视表任意单元格→数据透视表选项→启用显示明细数据→确定→单击"北京 汇总"行最后一个 ...

  7. Django 中 ModelForm 的使用

    定义 ModelForm 定制 ModelForm Meta 在 Form 中另外定义 Field 值得一提的一些 Field 转化 AutoField BooleanField ForeignKey ...

  8. Django create和save方法

    Django的模型(Model)的本质是类,并不是一个具体的对象(Object).当你设计好模型后,你就可以对Model进行实例化从而创建一个一个具体的对象.Django对于创建对象提供了2种不同的s ...

  9. Django model重写save方法及update踩坑记录

    一个非常实用的小方法 试想一下,Django中如果我们想对保存进数据库的数据做校验,有哪些实现的方法? 我们可以在view中去处理,每当view接收请求,就对提交的数据做校验,校验不通过直接返回错误, ...

随机推荐

  1. iOS: FFmpeg的使用一

    现状:现在视频直播非常的火,所以在视频直播开发中,使用的对视频进行遍解码的框架显得尤为重要了,其实,这种框架蛮多的,这次主要介绍一下FFmpeg视频播放器的集成和使用,FFmpeg是视频编解码的利器. ...

  2. MIME简介

    MIME(Multipurpose Internet Mail Extensions)多用途互联网邮件扩展类型.是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器 ...

  3. JS-获取图片地址

    var url=document.getElementById("a001").src; 或var url=document.getElementById("a001&q ...

  4. 简单测试Demo:如何用Java压缩文件夹和文件

    一.直接贴出测试代码 package com.jason.zip; import java.io.File; import java.io.FileInputStream; import java.i ...

  5. 解压zip,解决中文乱码

    Project p = new Project();        Expand e = new Expand();        e.setProject(p);        e.setSrc(f ...

  6. Android EditText禁止复制粘贴

    1,自定义EditText package com.example.ui; import android.annotation.SuppressLint; import android.content ...

  7. java面试题(开发框架)

    博客分类: java基础 面试Java多线程编程设计模式          java基础面试题目,以备不时之需 俗话说 细节决定成败.      就算很简单,很小的问题,我们还是要注意一下的.     ...

  8. Python-类属性与对象属性之间的关系

    只要对象的属性未被指定赋值过, 不论类的属性怎么改变, 对象的属性都会跟随改变, 若对象属性被赋值过, 则不跟随类的属性而改变

  9. OGNL表达式中的#、%和$

    $是el表达式  % #是ognl表达式.  http://devilkirin.iteye.com/blog/427375 OGNL表达式非常强大-其中#.%.$这三个符号在OGNL表达式中经常出现 ...

  10. 前端异步文件上传组件 Uploader

    Uploader是非常强大的异步文件上传组件,支持ajax.iframe.flash三套方案,实现浏览器的全兼容,调用非常简单,内置多套主题支持 和常用插件,比如验证.图片预览.进度条等,广泛应用于淘 ...