Bel*_*dez 6 python django hash django-models
我的模型中有一个需要计算的字段.我想在保存模型时执行这些计算.但是,因为它是资源密集型的,所以我只想在某些字段发生变化时执行这些计算.
将3个字段的哈希值保留为模型中的不同字段.在保存时,散列三个字段,如果等于当前在模型中保存的字段,则继续保存实例而无需进一步的工作.否则,执行计算,保存计算结果并保存新哈希.
这是最好的选择吗?如果没有,请分享哪些更好,为什么.
如果没有更好的方法:我应该使用哪种哈希?为什么?
我应该使用哪种Django模型字段类型来保存哈希?
我正在提交我最初想法的实现作为答案以供其他人批评:
from hashlib import md5
class Stop(models.Model):
line = models.CharField(max_length=12)
street = models.CharField(max_length=32, choices=STREET_CHOICES)
order = models.PositiveIntegerField(blank=True, null=True)
location_hash = models.CharField(max_length=32, null=True)
def save(self):
location_hash = md5('%s@%s' % (self.line, self.street))
if self.location_hash != location_hash:
self.order = calculate_order(line=self.line, street=self.street)
self.location_hash = location_hash
super(Stop, self).save()
Run Code Online (Sandbox Code Playgroud)
如果有人有任何建议、意见或疑虑;请分享!