
如果你想知道为什么我会想要这个,这里有一个简短的解释,我正试图实现.
基本上我有一个Freighttable模型,用于计算运费的价值,所以它应该有方法来做到这一点.但问题是有几种不同的计算方法,Freighttable的每个实例都应该按照其具体方式计算.
起初我想过使用某种多态来解决这个问题,但是我必须为每个不同的算法创建一个特定的模型,它们也会在数据库的不同表中,对我来说会有什么问题.我也考虑过使用Django Polymorphic,但我听说它不能很好地扩展,所以它也不是一个好主意.
我的想法是,如果我能在模型场上引用这些不同的算法,我将有一个优雅而有效的解决方案.
解决方法My thought is that if I Could just reference this different algorithms
on a Model FIEld
这是一个好主意,例如:
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))() 总结 以上是内存溢出为你收集整理的存储函数或类的Django模型字段全部内容,希望文章能够帮你解决存储函数或类的Django模型字段所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)