这个技巧,主要是用于表单初始化及回显。
也就是说,如果用户的数据库里有数据,则要将相应的数据显示在表单里,
如果用户的数据库里没有数据,才会生成一个空白的表单给用户,
这样才显得专业塞!
而我面对的尴尬问题是:
表单数据不是对应的数据库里的一条记录,而是符合条件的多条记录。
而且,数据库的过滤条件,是通过url里定义的值,而不是固定的参数过滤。
那么,肿么办?
查文档呗~~~~!
当看完相关文档,知道是先调用get方法,再调用get_initial方法来初始化表单时,
处理问题的方案,就浮现出来了。
通过类变量作传递嘛~~~
具体操作如下:
一,在formview里定义两个类变量(因为url里对应的是两个变量)。
class AppResEditView(FormView): template_name = 'app/app_res_edit.html' context_object_name = 'app_res' form_class = AppResForm app = None env = None
二,在get里填充这两个变量。
def get(self, request, *args, **kwargs): # 先在get方法里拿到app和env,放到类变量里, # 然后,在将变量传递到get_initial方法里,初始化表单数据。 # 这样实现是因为方法调用上有先后关系,且数据库里不是对应一条记录。 self.app = App.objects.get(name=kwargs['app']) self.env = Env.objects.get(name=kwargs['env']) return super().get(self, request, *args, **kwargs)
三,在get_initial方法里,拿出这两个变量,用来进行数据库过滤。
def get_initial(self, *args, **kwargs): """ Returns the initial data to use for forms on this view. """ # 初始化表单数据 initial = super().get_initial() res_list = AppEnvConfig.objects.filter(app=self.app, env=self.env) for item in res_list: initial[item.key] = item.value return initial
django的FormView中,自定义初始化表单数据的曲折方法的更多相关文章
-
Struts2中Action取得表单数据的几种方法
Struts2中Action取得表单数据的几种方法 Struts2中Action获得表单数据的几种方法struts2 Action获取表单传值 1.通过属性驱动式JSP: <form act ...
-
在Adobe Reader中保存PDF表单数据的方法
通常,Adobe Reader 用户填写表单后,是无法保存所填表单的副本的.但是,对于 Reader 8 和更高版本的用户,您可以扩展其权限,使他们可以完成此操作.如果您使用的是 Acrobat Pr ...
-
session_start()导致history.go(-1)返回时无法保存表单数据的解决方法
问题背景: 在填写完表单提交时,由于某个表单项可能填写的不合法,导致提交失败,返回表单页面.但返回后所有的表单都被清空了,重新填写比较麻烦,度娘解释说,是由于每个页面都调用了session_start ...
-
jQuery中设置form表单中action值的方法
jQuery中设置form表单中action值的方法 (2011-03-17 10:18:19) 转载▼ 标签: 杂谈 html代码: <form id="myFormId&quo ...
-
Django认证系统之自定义认证表
models.py from django.db import models from django.contrib.auth.models import AbstractUser class Use ...
-
表单数据校检方法 onsubmit()的使用?
在项目中为一个表单(from)编写onsubmit()脚本的时候,经常需要验证表单中数据的合法性 所以常会写道:<form action="/admin/addUser.do" ...
-
jquery表单数据验证扩展方法
/** 表单数据验证 **/ $.fn.Validform = function () { var Validatemsg = ""; var Validateflag = tru ...
-
Django 在admin中自定义app名
前提条件,注册时是: 完整的注册,不是直接用app名进行注册 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'dj ...
-
php中用于接受表单数据的$_request与$_post、$_get
一.$_request与$_post.$_get的区别和特点 $_REQUEST[]具用$_POST[] $_GET[]的功能,但是$_REQUEST[]比较慢.通过post和get方法提交的所有数据 ...
随机推荐
-
MySQL设置字段的默认值为当前系统时间
问题产生: 当我们在对某个字段进行设置时间默认值,该默认值必须是的当前记录的插入时间,那么就将当前系统时间作为该记录创建的时间. 应用场景: 1.在数据表中,要记录每条数据是什么时候创建的,应该由数据 ...
-
MongoDB笔记
mongodb简介 MongoDB 是一个基于分布式文件存储的数据库.存储的是Bson结构的文档(二进制的JSON),内部执行引擎为JS解释器,把文档存储为BSON结构,在查询时,转换为JS对象,可以 ...
-
将dataGridView数据转成DataTable
如已绑定过数据源: DataTable dt = (dataGridView1.DataSource as DataTable) 如未绑定过数据源: public DataTable GetDgvTo ...
-
nginx按天切割日志
原文链接:http://www.cnblogs.com/benio/archive/2010/10/13/1849935.html 本文只节选部分内容 Nginx自己没有日志分割的功能,一旦时间过长 ...
-
Oracle系列之视图
涉及到表的处理请参看原表结构与数据 Oracle建表插数据等等 创建视图,把tb_Employee表sal<1000的雇员,映射到该视图( view) create or replace vi ...
-
ZOJ 2702 Unrhymable Rhymes(DP)
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1702 题目大意:给定有很多数字组成的诗,譬如 “AABB”, “AB ...
-
C#写PDF文件类库PDF File Writer介绍
.NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍 阅读目录 1.PDF File Writer基本介绍 2.一个简单的使用案例 3.资源 1年前,我在文章:这 ...
-
eclipse修改豆沙绿
长时间的使用eclipse开发会很累吧 设置一个保护眼睛的豆沙绿色 不刺眼 是不是会更好一些呢 那么如何设置呢现在就教大家 工具/原料 eclipse jdk 方法/步骤 1 首先打开eclip ...
-
ubuntu 切换java环境,配置单独的用户环境
执行命令:sudo update-alternatives --config javaThere are 2 choices for the alternative java (providing ...
-
hive-相关报错处理${system:java.io.tmpdir}
在使用hive的时候启动成功 [root@localhost bin]# ./hive which: no hbase in (/usr/local/hive/apache-hive-2.1.1-bi ...