存储函数或类的Django模型字段
发布时间:2020-12-20 11:32:34 所属栏目:Python 来源:网络整理
导读:是否可以创建引用函数或类而不是模型的Django自定义模型字段? 如果你想知道为什么我会想要这个,这里有一个简短的解释,我正试图实现. 基本上我有一个FreightTable模型,用于计算运费的价值,所以它应该有方法来做到这一点.但问题是有几种不同的计算方法,Freigh
是否可以创建引用函数或类而不是模型的Django自定义模型字段?
如果你想知道为什么我会想要这个,这里有一个简短的解释,我正试图实现. 基本上我有一个FreightTable模型,用于计算运费的价值,所以它应该有方法来做到这一点.但问题是有几种不同的计算方法,FreightTable的每个实例都应该按照其具体方式计算. 起初我想过使用某种多态来解决这个问题,但是我必须为每个不同的算法创建一个特定的模型,它们也会在数据库的不同表中,对我来说会有什么问题.我也考虑过使用Django Polymorphic,但我听说它不能很好地扩展,所以它也不是一个好主意. 我的想法是,如果我能在模型场上引用这些不同的算法,我将有一个优雅而有效的解决方案. 解决方法
这是一个好主意,例如: CALCULATION_TYPES = [(1,'Normal'),(2,'Express')] class FreightTable(models.Model): # Normal fields calculation_type = models.IntegerField(choices=CALCULATION_TYPES) def calc_normal(self): pass def calc_express(self): pass def calc_default(self): pass 现在,对于每种货运类型,您可以设置计算方法: ft = FreightType(calculation_type=2) ft.save() 在您想要显示计算结果的位置,从实例中获取方法,然后调用适当的方法: call_map = {1: 'calc_normal',2: 'calc_express'} ft = FreightTable.objects.get(pk=1) calculated_value = getattr(ft,call_map(ft.calculation_type))() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python串口助手
- python-2.7 – 使用pyopenssl创建自签名证书
- 如何在pandas数据帧中快速和高效地将两列(浮点)捕获到列中?
- 利用matplotlib+numpy绘制多种绘图的方法实例
- Note that only Django core commands are listed as setti
- python – pylint:禁用R0921不起作用,仍然警告
- Python中多线程的创建及基本调用方法
- python – django makemigrations没有检测到新模型
- Python3入门 Python3+Selenium做UI页面测试的学习
- python全栈闯关--7-基础数据类型汇总、集合、深浅拷贝