Django forms 关于select和checkbox设置初始选中值
Django的forms和models一样很牛逼。他有两种功能,一是生成form表单,还有就是form表单的验证。
这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况。
1. 前端在展示checkbox时,希望设置一个默认选中的选项。如下图:

先来看一下form是如何定义的:

也就是说我们要在前端生成页面的时候,让他把2那一项选中,要怎么做呢?
方法一:
先来看一个东西,在django/forms/widgets.py文件中,有一个字段如下图

这里有个_empty_value字段就是设置默认值的。
在定义form时,在构造方法中利用该字段为其配置默认选项:
(这里可能有疑问为啥该字段的值要是个列表?因为定义的这个form类型是一个多选。。。)

看到PEP8提示的波浪线就知道这玩意儿不是个好方法,很显然还有别的方法。
方法二:
利用initial,在定义form的时候设置初始值。

方法三:
利用initial,在生成form示例的时候设置初始值。

2. 前端在展示select时,希望设置一个默认选中的选项。如下图:(我们这里定义了一个单选的select)
还是先来看一下form的定义:

我们希望在前端显示时,能够默认选中2那一项,如下图:

这个时候基本上跟上例中都是一样的方法。
方法一:
还是在定义form的时候为city字段设置一个初始值

方法二:
在生成form实例的时候为city字段设置一个初始值

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# __author__ = "Q1mi"
# Email: master@liwenzhou.com from django import forms class SelectTestForm(forms.Form):
city = forms.IntegerField(
widget=forms.Select(
choices=(
(1, "BeiJing"),
(2, "WeiHai"),
(3, "RuShan"),
),
attrs={
"class": "form-control",
}
),
required=True
) modes = forms.TypedChoiceField(
coerce=lambda x: x == "",
choices=(
(1, "负载均衡"),
(2, "极致性能"),
(3, "超级无敌"),
),
widget=forms.CheckboxSelectMultiple( ),
) def __init__(self, *args, **kwargs):
super(SelectTestForm, self).__init__(*args, **kwargs)
# self.fields["modes"].widget._empty_value = [2, ] # 方法1
self.initial["modes"] = [2, ] # 方法2
self.initial["city"] = 2
form代码
from django.shortcuts import render, HttpResponse
from testapp.forms import select_test # Create your views here. def test(request):
f = select_test.SelectTestForm(initial={"city": 2, "modes": [2, ]}) # 方法2
if request.method == "POST":
print(request.POST)
return HttpResponse("OK")
else:
return render(request, "test/select_test.html", {"f": f})
views代码
3. 从数据库里查询数据返回前端展示时,如何在前端的标签中选中的指定的选项。

将数据库中查询出来的选中的authors的id作为参数传入BookForm类生成一个对象,将该form对象传到前端就可以准确展示出那些选中的值。
这里如果写成f = change_book.BookForm()的话,前端只会展示出空的表单(当然select标签会默认选中第一个),不会显示出数据库中保存的对应的值。

搜集和整理资料不易,转载请注明出处。
Django forms 关于select和checkbox设置初始选中值的更多相关文章
- Django forms 关于select和checkbox设置初始选中值及让前端选中指定值
Django的forms和models一样很牛逼.他有两种功能,一是生成form表单,还有就是form表单的验证. 这里主要说一下生成form表单时经常用到的需要设置 初始值 / 默认值 的情况. 1 ...
- jquery设置checkbox状态,设置dropdownlist选中值,隐藏某控件,给某控件追加东西
jquery设置checkbox状态 $("[ID$=chkType]").attr("checked", true); jquery设置dropdownlis ...
- HTML中的<select>标签如何设置默认选中的选项
方法有两种. 第一种通过<select>的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果. 1 2 3 4 5 < select id = " ...
- jquery获取复选框(checkbox)的选中值(一组和单个)
使用jquery获取一组或者单个checkbox的选中状态的值.下面通过一个示例进行说明,假设现有一页面有一组checkbox的name的值为id,那么获取这组name=id的checkbox的值的方 ...
- 单选框radio总结(获取值、设置默认选中值、样式)
单选框 radio <div class="radio-inline"> <input type="radio" name="kil ...
- js获取checkbox中所有选中值及input后面所跟的文本
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- jquery遍历获取带checkbox表格的选中值以及遍历json数组
今天整理了一下jquery遍历的两个用法,分享给大家. 1.$().each 主要用来遍历DOM元素,获取DOM的值或样式等. 2.$.each() 主要用来遍历后台ajax返回的json数组,循环将 ...
- Django forms表单 select下拉框的传值
今儿继续做项目,学习了Django的forms生成前端的代码. forms.py class SignupForm(forms.Form): username = forms.CharField(va ...
- 《jQuery判断radio、checkbox、select 是否选中和设置选中问题以及获取选中值》总结
<form> <input type="radio" name="gender" id="man" value=" ...
随机推荐
- [转]nodejs中package.json和package-lock.json文件的功能分析
本文转自:https://blog.csdn.net/u013992330/article/details/81110018 最新版nodejs中,多了一个package-lock.json文件,刚开 ...
- git 上传本地项目
一.下载和安装git 官网下载,默认一直点下一步安装. https://git-scm.com/ 二.在www.gitee.com 注册一个账号 1.点击加号“+”在gitee中新建一个项目 2.下面 ...
- 1. 七种join的sql编写
一.join图 二.sql演示 a.创建演示表及数据 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ----------------------- ...
- Netty实战四之传输
流经网络的数据总是具有相同的类型:字节(网络传输——一个帮助我们抽象底层数据传输机制的概念) Netty为它所有的传输实现提供了一个通用的API,即我们可以将时间花在其他更有成效的事情上. 我们将通过 ...
- springboot调优
application.properties server.tomcat.max-connections=0 # Maximum number of connections that the serv ...
- MySQL技巧(三)运算符与函数
- javascript 动态修改css样式
方法一:改变外联css文件,这里不讲这个. 方法二:通过改变claaName来改变样式,语法: obj.className = "style2"; //或者 obj.setAttr ...
- JAVA 多线程(3)
再讲线程安全: 一.脏读 脏读:在于读字,意在在读取实例变量时,实例变量有可能被另外一个线程更改了,导致获取到的数据出现异常. 在非线程安全的情况下,如果线程A与线程B 共同使用对象实例C中的方法me ...
- 中国最强AI超级服务器问世,每秒提供AI计算2000万亿次
https://mp.weixin.qq.com/s/1EVczHp11OJ4GEjeE3z5cA 业内唯一以“AI计算”为核心的人工智能大会昨天发布了一份重要报告. 9月12日,<中国AI计算 ...
- MFC更换画笔(画刷)颜色以及画眼睛(GDI画图)
MFC画眼睛 换画笔(画刷)颜色(参考链接:https://blog.csdn.net/sunxiving/article/details/51272001) 由于画笔一旦创建后就无法修改.所以要修改 ...