我一直在尝试在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
答案 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()
(我不知道它是否是最好的方法,但它对我有用!)