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. 我常用的Linux快捷命令

    alias 设置快捷自定义命令 语法: alias 快捷命令='完整命令' 因为可以直接把上述当成一条语句来执行,但是服务器重启之后会失效,被称为临时快捷命令: 但是!将他写入 ~/.bashrc 文 ...

  2. php对接飞书机器人报警接口

    <?php function request_by_curl($remote_server, $post_string) { $ch = curl_init(); curl_setopt($ch ...

  3. 升级安装cuda

    下载驱动: https://www.nvidia.com/Download/Find.aspx 在这里下载并按照指导安装: https://developer.nvidia.com/cuda-down ...

  4. 安装使用反编译工具ILSPY

    一.ILSPY简介1.1.ILSPY介绍 ILSPY是一款开源.免费的.且适用于.NET平台反编译[C#语言编写的程序和库(.dll)内容]工具:可以集成在Visual Studio 开发工具中,能够 ...

  5. cAPP.h头文件

    前言 最近几天闲的没事,写了一个可以用来写简单的app程序的头文件,分享给大家! 头文库 #ifndef CAPP_H #define CAPP_H #include<bits/stdc++.h ...

  6. String和StringBuffer与StringBuilder的区别

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

  7. kali WiFi相关研究(学习中...)

    基础环境准备: 笔记本一台E470c(内置网卡 Qualcomm Atheros QCA9377 802.11ac) # 经过测试创建虚拟AP不成功 外置网卡一个:UGREEN 绿联AC1300M,芯 ...

  8. IIS管理器中远程管理其它web服务器上的IIS站点

    IIS管理器中远程管理其它web服务器上的IIS站点 当生产环境服务器和部署项目过多时, 就需要单独一台机器来统一管理这些项目, 部署配置如下: 环境:项目服务器5台,运维服务器1台 应用:由运维服务 ...

  9. python的排序问题

    python的排序方法有两个 1 nums.sort() # 原数组上排序, 没有返回值, nums变为有序 2 # 或者 3 nums = sorted(nums) # 原数组不变, 会返回一个排好 ...

  10. mysql 获取某个时间段内每天的数据

    SELECT dayTb.cday '日期' ,IFNULL(tNumTb.num,0) '订单数' FROM ( SELECT @cdate := DATE_ADD(@cdate, INTERVAL ...