django的FormView中,自定义初始化表单数据的曲折方法
这个技巧,主要是用于表单初始化及回显。
也就是说,如果用户的数据库里有数据,则要将相应的数据显示在表单里,
如果用户的数据库里没有数据,才会生成一个空白的表单给用户,
这样才显得专业塞!
而我面对的尴尬问题是:
表单数据不是对应的数据库里的一条记录,而是符合条件的多条记录。
而且,数据库的过滤条件,是通过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方法提交的所有数据 ...
随机推荐
- 使用MedleyText与Syncthink自建云笔记
随着学习加深,做的笔记越来越多,而使用云笔记怕万一平台关闭(如360网盘啥的)还需要导出笔记费时费力,并且多平台兼容性未知.还是自己搭建放心省事. MedleyText介绍 MedleyText为ma ...
- Jacob用法收集
介绍 Jacob 是Java-COM Bridge的缩写,它在Java与微软的COM组件之间构建一座桥梁.使用Jacob自带的DLL动态链接库,并通过JNI的方式实现了在Java平台上对COM程序的调 ...
- HDU小小练
hdu1253胜利大逃亡(bfs) 题意:就是城堡问题,找出可通行路径即可 思路:三维BFS,设定前后上下左右6个方向搜索,注意开始的时候人站的位置可以是墙. hdu1495非常可乐(bfs) 题意: ...
- 第18月第2天 ios博客
1. github https://githuber.cn/search?language=Objective-C https://www.jianshu.com/u/815d10a4bdce htt ...
- Node、PHP、Java 和 Go 服务端 I/O 性能PK
http://blog.csdn.net/listen2you/article/details/72935679
- GSON中Java对象与JSON互相转换——(一)
json的转换插件是通过java的一些工具,直接将java对象或集合转换成json字符串. 常用的json转换工具有如下几种: 1)jsonlib 2)Gson:google 3)fastjson:阿 ...
- ubuntu14.04 提示 卷 文件系统根目录 仅剩余xxx的硬盘空间
- 【转】Windows下安装python2和python3双版本
[转]Windows下安装python2和python3双版本 现在大家常用的桌面操作系统有:Windows.Mac OS.ubuntu,其中Mac OS 和 ubuntu上都会自带python.这里 ...
- python中argparse
python中argparse 在很多编程语言中,运行程序可以直接使用function(a,b,……)运行程序,但是在python中就无法实现,那么我们如何在命令行中传递参数呢?在python的中,有 ...
- 深入理解CMA【转】
转自:https://www.csdn.net/article/a/2016-07-07/15839383 摘要:连续内存分配(简称CMA) 是一种用于申请大量的,并且物理上连续的内存块的方法,在LW ...