modelform动态显示select标签的对象范围
既根据当前登录人,动态显示对象相关的的select的选项,例如 A登录,只显示A的客户,B登录,只显示B自己的客户

先了解form的ModelChoiceField字段(这个表格没意义,就是引出参数queryset)
class BookForm(forms.Form):
title=forms.CharField(max_length=32)
price=forms.IntegerField()
pub_date=forms.DateField(widget=widgets.TextInput(attrs={"type":"date"}))
#publish=forms.ChoiceField(choices=[(1,"AAA"),(2,"BBB")])
publish=forms.ModelChoiceField(queryset=Publish.objects.all()) #单选
authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all()) #多选
默认是显示外键关联表的所有字段,queryset=objects.all()
然后大多数用的是modelform,可以利用field.queryset,动态限制显示对象
class ConsultRecordModel(forms.ModelForm):
class Meta:
model=ConsultRecord
exclude=['delete_status']
def __init__(self,request,*args,**kwargs):
super().__init__(*args,**kwargs)
self.fields['consultant'].queryset = UserInfo.objects.filter(pk=request.user.pk)
self.fields['customer'].queryset = Customer.objects.filter(consultant=request.user)
for field in self.fields.values():
field.widget.attrs.update({'class':'form-control'})
把想展示出来的用户,或者顾客,利用request.user,过滤出来 , 然后在赋值给相关字段的queryset( self.fields['consultant'].queryset ),这样,select展示出来的对象就是自己相关的对象了
view视图一定要把request传过来,不然会飘红~~
form = ConsultRecordModel(request, instance=obj)
modelform动态显示select标签的对象范围的更多相关文章
- 获取select标签选中状态 的label的值。
<select name="procode" onchange="alert(this.options[this.selectedIndex].text)" ...
- HTML <select> 标签 创建单选或多选菜单
所有主流浏览器都支持 <select> 标签. select 元素可创建单选或多选菜单. <select&> 元素中的 <option> 标签用于定义列表中 ...
- HTML中的<select>标签如何设置默认选中的选项
方法有两种. 第一种通过<select>的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果. 1 2 3 4 5 < select id = " ...
- jquery插件,美化select标签
最近经常与select打交道,因为ie下的select实在太丑了,css怎么搞都搞不好看,因为程序已经写得差不多了,要再去模拟select改动太大,就想着能否不改动select,同时美化它.借鉴一下这 ...
- 03_MyBatis基本查询,mapper文件的定义,测试代码的编写,resultMap配置返回值,sql片段配置,select标签标签中的内容介绍,配置使用二级缓存,使用别名的数据类型,条件查询ma
1 PersonTestMapper.xml中的内容如下: <?xmlversion="1.0"encoding="UTF-8"?> < ...
- html select 标签设置默认选中
方法有两种. 第一种通过<select>的属性来设置选中项,此方法可以在动态语言如php在后台根据需要控制输出结果. 1 2 3 4 5 < select id = " ...
- MyBatis映射文件4(参数获取#{}和${}/select标签详解[返回类型为list])
参数获取 之前我们都是采用#{}的方式进行参数传递,其实MyBatis还有另外的参数传递方式${} 使用方法相同,但是还是有很大区别的 这里做一个测试: <select id="get ...
- Ajax与select标签的组合运用
---------------------------------------------------------------------------------------------------- ...
- Django--form生成select标签
需求 Django--form表单中的select生成方法,如果select中的选项不固定,需要怎么操作. 速查 1.固定select选项 forms 1 2 3 class 表单类名称(forms. ...
随机推荐
- git分支合并的冲突解决方法
本次学习的是解决不同分支提交的内容不同导致合并冲突,及怎样解决冲突. 基本命令: git log --graph查看分支合并图 具体步骤: 新建分支branch1,并修改rea ...
- IIS 使用多个https和通配证书解决方案
环境:OS :WINDOWS 2008 IIS: IIS7 域名:三个二级域名 问题:由于一个网站只支持一个443,但可以通过更改配置得到绑定不同域名.但由于公用证书,所以问题出来.只能为一个二级域名 ...
- windows,cmd中,如何切换到磁盘的根目录下
需求描述: 在windows的cmd中操作,有的时候也会遇到切换了很多的目录,然后需要切换到根目录的情况 操作过程: 1.通过cd \的方式,切换回当前磁盘的根目录下 备注:未切换之前,在Driver ...
- PL/SQL如何调试Oracle存储过程
from:http://jingyan.baidu.com/article/3a2f7c2e144d2826aed61167.html 调试过程对找到一个存过的bug或错误是非常重要的,Oracle作 ...
- Java 实现选择排序
选择排序: 原理:依次从数组最左边取一个元素,与之后的位置上的元素比較,假设大于/小于(取决于须要升序排还是降序排).则保存较大/较小元素的索引 当一轮比較后,将保存的较大/较小元素的索引与 这轮開始 ...
- ASIHttpRequest封装
ASIHttpRequest是一个非常好的库,只是直接使用稍嫌麻烦,以下就尝试来封装一下吧. 思路:每次请求时,须要创建一个ASIHttpRequest对象,设置它的属性(url,delegate.p ...
- Android NDK开发-1-环境搭建
1.NDK介绍 Android NDK 是在SDK前面又加上了“原生”二字,即Native Development Kit,因此又被Google称为“NDK”.众所周知,Android程序运行在Dal ...
- Android SDK更新下载失败以及Studio首次安装取消自动下载SDK
这是因为,此时Android Studio会去获取 android sdk 组件信息,这个过程相当慢,还经常加载失败,导致Android Studio启动不起开. 解决办法: 不去获取android ...
- android基础组件---->Checkboxe的使用
由于使用比较简单,这篇博客涵盖Checkboxes和Radio Buttons和Toggle Buttons.好了我们开始今天的学习.我被世俗隐瞒,转身又被自己撞倒.从莫须有的罪名起步,行色简单,心术 ...
- 卸载vue-cli
全局安装:npm install vue-cli -g; 全局卸载:npm uninstall vue-cli -g; 查看vue版本,vue -V 回车,查看vue最新的版本.