在django中实现hashid

时间:2016-08-22 19:03:43

标签: python django hashids

我一直在尝试在django模型中实现hashids。我想基于模型call获取hashid,就像模型' from functools import wraps def count_calls_bad(func): func.calls = 0 @wraps func def inner(*args,**kwargs): func.calls += 1 #each call to inner increments func.calls (recur_n.calls) return func(*args,**kwargs) return inner 那样,哈希编码应该是这样的:id。事情是我不能得到id或pk直到我保存它们。我的想法是获取最新的对象id=3并在其上添加hashid.encode(id)。但它对我来说不是解决方案。任何人都可以帮我搞清楚吗???

django模型是:

id

2 个答案:

答案 0 :(得分:1)

如果还没有ID,我只会告诉它保存,所以每次都不会运行代码。您可以使用TimeStampedModel继承来执行此操作,这实际上非常适合在任何项目中使用。

Number

答案 1 :(得分:0)

我认为哈希值总是为特定的id返回相同的值。所以你可以在显示它之前计算它(使用模板标签)。

但是如果你还想保存它,一种方法是在这些视图中保存hashid字段,如下所示:

instance = Article()
instance.title = 'whatever...'
instance.text = 'whatever...'
instance.save()

hashids = Hashids()    
instance.hashid = hashids.encode(instance.id)
instance.save()

(我不知道它是否是最好的方法,但它对我有用!)