博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
modelform动态显示select标签的对象范围
阅读量:7212 次
发布时间:2019-06-29

本文共 1328 字,大约阅读时间需要 4 分钟。

既根据当前登录人,动态显示对象相关的的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)

 

转载于:https://www.cnblogs.com/amber-liu/p/10002356.html

你可能感兴趣的文章
勒索病毒入侵中国, Splunk建议网络立即进行区分和隔离设置
查看>>
应“云”而生--云时代的运维新理念
查看>>
RFID能否让实体零售业度过“寒冬”?
查看>>
Swagger2接口注释参数使用数组
查看>>
“IP的力量”专题论坛成功举办,聚焦行业共话IP与VR AR技术新融合
查看>>
Ubuntu下使用UFW配置防火墙(简化iptables的操作)
查看>>
OpenStack快速入门-queens版本
查看>>
大数据驱动智能制造 物联网引爆工业革命商机
查看>>
一个比较完善的购物车类
查看>>
「镁客·请讲」Visense Studio冯樑杰:游戏基因的VR视频,最好的表现是真人实拍交互...
查看>>
让人欲罢不能的量子学
查看>>
美团在Redis上踩过的一些坑-2.bgrewriteaof问题
查看>>
C# StreamReader.ReadLine统计行数的问题
查看>>
异常测试实践与梳理
查看>>
多者异也
查看>>
tf:'hello tensorflow'
查看>>
RedisConf2018记录--Day 1 sessions
查看>>
CentOS的el5, el6, el7代表什么
查看>>
柏林纪行(中):Node.js Collaboration Summit
查看>>
IT网络通信大变革时代来临 2016中国极客大奖为您找到风向标
查看>>