ModelForm自定义字段的显示效果

class ChargeModelForm(BootStrapModelForm, forms.ModelForm):
# 静态变量
# charge_type = forms.ChoiceField(
# label='类型',
# choices=[(1, '充值'), (2, '扣款')], # 只适合固定的数据,不适合去数据表中获取数据(注意:此方式前端提交的数据为str类型)
# )
charge_type = forms.TypedChoiceField(
label='类型',
choices=[(1, '充值'), (2, '扣款')],
coerce=int # 获取值之后会自动将数据转换成int类型
) class Meta:
model = models.TransactionRecord
fields = ['charge_type', 'amount'] # def __init__(self, *args, **kwargs):
# super().__init__(*args, **kwargs)
# # 每次实例化就重新调用该方法(注意:此方式前端提交的数据为int类型)
# self.fields['charge_type'].choices = [(1, '扣款'), (2, '充值')]
def customer_charge(request, pk):
queryset = models.TransactionRecord.objects.filter(customer_id=pk, customer__active=1).order_by('-id') pager = Pagination(request, queryset)
form = ChargeModelForm() return render(request, 'customer_charge.html', {'pager': pager, 'form': form})
class TransactionRecord(models.Model):
"""交易记录"""
charge_type_class_mapping = {
1: 'success',
2: 'danger',
3: 'default',
4: 'info',
5: 'primary',
}
charge_type_choices = ((1, '充值'), (2, '扣款'), (3, '创建订单'), (4, '删除订单'), (5, '撤单'))
charge_type = models.SmallIntegerField(verbose_name='类型', choices=charge_type_choices) customer = models.ForeignKey(verbose_name='客户', to='Customer', on_delete=models.CASCADE)
amount = models.DecimalField(verbose_name='金额', default=0, max_digits=10, decimal_places=2) creator = models.ForeignKey(verbose_name='管理员', to='Administrator', on_delete=models.CASCADE, null=True, blank=True)
order_oid = models.CharField(verbose_name='订单号', max_length=64, null=True, blank=True, db_index=True) create_datetime = models.DateTimeField(verbose_name='交易时间', auto_now_add=True)
memo = models.TextField(verbose_name='备注', null=True, blank=True)

ModelForm返回数据的问题处理

问题1:返回页面数据是对象的解决方式

在models 中,配置相应表的 __str__ 方法的返回值

问题2:返回的数据,个别的字段需要过滤条件,怎么解决?

方式1:在需要过滤条件models表中的字段中,配置如下

level = models.ForeignKey(verbose_name='级别', to='Level', on_delete=models.CASCADE, limit_choices_to={"active": 1})

方式2:在ModelForm中,写 init 方法

class CustomerModelForm(BootStrapModelForm, forms.ModelForm):
class Meta:
model = models.Customer
fields = ['username', 'mobile', 'password', 'level'] def __init__(self, request, *args, **kwargs):
super().__init__(*args, **kwargs)
# data = request.GET.get('xxx') # 该获取的参数是扩展,可以在实例化对象时,传入request参数
self.fields['level'].queryset = models.Level.objects.filter(active=1) def customer_add(request):
form = CustomerModelForm() # 有需要动态获取值的,在这里传入request参数
return render(request, 'form2.html', {'form': form})

问题3:返回choices字段,只取个别的值

class ChargeModelForm(BootStrapModelForm, forms.ModelForm):
# 方式1:
creator = forms.ChoiceField(
label='管理员',
choices=models.Administrator.objects.filter(ig__gt=1).values_list('id', 'username')
) class Meta:
model = models.TransactionRecord
fields = ['creator'] def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
# 每次实例化就重新调用该方法(注意:此方式前端提交的数据为int类型)
# 方式2:
self.fields['charge_type'].choices = models.Administrator.objects.filter(ig__gt=1).values_list('id', 'username')

31 ModelForm常用功能--扩充的更多相关文章

  1. python3 字符串与列表常用功能

    一.字符串常用功能 1. capitalize(),将字符串的首字母变成大写,其余全部置为小写:如果字符串中有多个单词,也只是将第一个单词的首字母置为大写:例: >>> name = ...

  2. 开源三维地球GIS引擎Cesium常用功能的开发

    Cesium是一个非常优秀的三维地球GIS引擎(开源且免费).能够加载各种符合标准的地图图层,瓦片图.矢量图等都支持.支持3DMax等建模软件生成的obj文件,支持通用的GIS计算:支持DEM高程图. ...

  3. Fiddler抓取https请求 & Fiddler抓包工具常用功能详解

    Fiddler抓取https请求 & Fiddler抓包工具常用功能详解   先来看一个小故事: 小T在测试APP时,打开某个页面展示异常,于是就跑到客户端开发小A那里说:“你这个页面做的有问 ...

  4. C#构造方法(函数) C#方法重载 C#字段和属性 MUI实现上拉加载和下拉刷新 SVN常用功能介绍(二) SVN常用功能介绍(一) ASP.NET常用内置对象之——Server sql server——子查询 C#接口 字符串的本质 AJAX原生JavaScript写法

    C#构造方法(函数)   一.概括 1.通常创建一个对象的方法如图: 通过  Student tom = new Student(); 创建tom对象,这种创建实例的形式被称为构造方法. 简述:用来初 ...

  5. mybatis常用功能总结

    mybatis-plus常用功能总结-以User表为例 1.数据库 id name age email create_time update_time version deleted 1 mary 2 ...

  6. Nginx实战部署常用功能演示(超详细版),绝对给力~~~

    前言 上次分享了一些开发过程中常用的功能,但如果到真实环境中,其实还需要一些额外的配置,比如说跨域.缓存.配置SSL证书.高可用等,老规矩,还是挑几个平时比较常用的进行演示分享.上篇详见Nginx超详 ...

  7. WebStorm 常用功能的使用技巧分享

    WebStorm 是 JetBrain 公司开发的一款 JavaScript IDE,使用非常方便,可以使编写代码过程更加流畅. 本文在这里分享一些常用功能的使用技巧,希望能帮助大家更好的使用这款强大 ...

  8. AVA正则表达式4种常用功能

    正则表达式在字符串处理上有着强大的功能,sun在jdk1.4加入了对它的支持 下面简单的说下它的4种常用功能: 查询: String str="abc efg ABC";  Str ...

  9. [转]WebPack 常用功能介绍

    概述 Webpack是一款用户打包前端模块的工具.主要是用来打包在浏览器端使用的javascript的.同时也能转换.捆绑.打包其他的静态资源,包括css.image.font file.templa ...

  10. FastReport.Net 常用功能总汇

    一.常用控件 文本框:输入文字或表达式 表格:设置表格的行列数,输入数字或表达式 子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要的报表.系统在打印处理时,先按主报表打印,当碰到 ...

随机推荐

  1. 实验一 Python程序设计入门 20203412马畅若

    课程:<Python程序设计>班级: 2034姓名: 马畅若学号:20203412实验教师:王志强实验日期:2021年4月13日必修/选修: 公选课 实验一 (一)实验内容 1.熟悉Pyt ...

  2. iOS系统自带的扫码功能(二维码+条形码+识别本地图片)

    扫码采用类库:AVFoundation 1.相关权限 1).需要在info.plist中添加以下权限:Privacy - Camera Usage Description(使用摄像机的权限说明) 2) ...

  3. Django操作mongo数据库二(MongoClient方式)

    一.基本环境 1.开发环境: Python环境:Python 3.8.16 Django环境:4.1 2.需要安装的包 pip install pymongo pip install mongoeng ...

  4. P1219 [USACO1.5]八皇后 Checker Challenge

    好长时间没登博客园了,今天想起了账号密码,遂发一篇题解 最近因为复赛正在复健搜索,所以做了这道题 这道题说难并不是很难,但是在于这个题需要找到两个规律 以下是原题 [USACO1.5]八皇后 Chec ...

  5. -bash: nslookup: 未找到命令;centos7 安装nslookup

    一.安装服务 [root@localhost ~]# yum -y install bind-utils 二.查看 [root@localhost ~]# nslookup

  6. String和StringBuffer与StringBuilder的区别

    1.String.StringBuffer.StringBuilder都不可以被继承,在JDK中它们都被定义为final类. 2.执行速度:StringBuilder > StringBuffe ...

  7. 大规模并行处理器编程实战_原书第2版_pdf

    链接:https://pan.baidu.com/s/1c8ez8dCTz5bUQchwhXAF7w 提取码:tc1f

  8. vue iframe网页内嵌及传参

    思路 通过域名传参做并加密处理 内嵌页面通过域名来接收参数并解密 外套页面 <iframe :src="url" scrolling="yes" back ...

  9. Accelerated molecular dynamics simulation of Silicon Crystals on TaihuLight using OpenACC 阅读

    基于OpenACC的太湖之光硅晶体加速分子动力学模拟    2020 摘要:以SW26010异构多核处理器和扩展的编程模型,使用多体势(Tersoff)执行固体共价晶体的分子动力学(MD)模拟. Am ...

  10. 记录坑:Chrome谷歌浏览器最小化和页面遮挡后JS代码不稳定

    问题:用定时器 setInterval()做个滚动通知的动画,浏览器最小化时,定时器 setInterval()失效了,导致滚动条重叠了 可能原因: js代码不稳定 Chrome谷歌浏览器最小化和页面 ...