我正在处理一些必须返回模型字段总和的模型。是重写模型上的save方法还是创建一个返回sum的自定义方法更好。两种解决方案是否存在性能问题?在
选项1:重写save方法。在
class SomeModel(models.Model):
integer1 = models.IntegerField()
integer2 = models.IntegerField()
integer3 = models.IntegerField()
sum_integers = models.IntegerField()
def save(self, *args, **kwargs):
self.sum_integers = sum(
[self.integer1, self.integer2, self.integer3])
self.sum_integers.save()
return super(SomeModel, self).save(*args, **kwargs)
选项2:自定义方法
^{pr2}$
取决于你是要更新更多的字段还是需要更多地调用总和。在
为了使它更通用,我假设运算不仅是加法运算,而且是涉及大量数字的多重复杂计算。在
如果您必须时不时地得到总和,那么最好创建一个模型字段并在保存时增加值。在
如果您必须更新它,那么通常在调用时获取值(第二种方法)更合适
答案取决于你使用和整数的方式。如果您将它作为一个字段保存在数据库中,您将能够对它进行查询,而使用属性则会非常棘手。在
另一方面,如果您不打算进行查询,并且这些数据对您没有价值(换句话说,您需要和整数作为数据表示) 那你应该带着财产去。在
从应用性能来看: 如果要对数千个对象进行复杂的操作,那么最好将值存储在列中,或者至少在调用几次时将属性更改为cached_property。在
作为一个摘要-在DB column中存储sum的值更通用,并且没有任何降级,但是在某些情况下,
property
方法允许您保持数据模型的整洁,并在磁盘上节省一些空间。在我希望这是你问题的答案。如果有不清楚的地方,请填写免费提问。在
相关问题 更多 >
编程相关推荐