为 Django Simple History 历史对象生成 url
Generate url for Django Simple History historical object
给定一个名为 Stuff
的模型,我希望 url 成为 HistoricalStuff
对象。
换句话说,如何在下面的代码片段中实现 get_historical_url
?
stuff = Stuff.objects.first()
stuff.pk
-> 100
historical_stuff = stuff.history.first() # we want to get url for this
historical_stuff.pk
-> 1
get_historical_url(historical_stuff)
-> /path/to/admin/stuff/100/history/1
显然,愚蠢的解决方案是使用格式字符串,但我宁愿使用 urlresolvers
经过多方挖掘,我在简单的历史源代码中发现 url 名称类似于管理员更改名称,即 admin_%s_%s_simple_history
.
根据这些知识,get_historical_url
看起来像
def get_simplehistory_url(history_obj):
parent_obj = history_obj.history_object
return urlresolvers.reverse('admin:{}_{}_simple_history'.format(
parent_obj._meta.app_label, parent_obj._meta.model_name), args=(parent_obj.id, history_obj.pk))
给定一个名为 Stuff
的模型,我希望 url 成为 HistoricalStuff
对象。
换句话说,如何在下面的代码片段中实现 get_historical_url
?
stuff = Stuff.objects.first()
stuff.pk
-> 100
historical_stuff = stuff.history.first() # we want to get url for this
historical_stuff.pk
-> 1
get_historical_url(historical_stuff)
-> /path/to/admin/stuff/100/history/1
显然,愚蠢的解决方案是使用格式字符串,但我宁愿使用 urlresolvers
经过多方挖掘,我在简单的历史源代码中发现 url 名称类似于管理员更改名称,即 admin_%s_%s_simple_history
.
根据这些知识,get_historical_url
看起来像
def get_simplehistory_url(history_obj):
parent_obj = history_obj.history_object
return urlresolvers.reverse('admin:{}_{}_simple_history'.format(
parent_obj._meta.app_label, parent_obj._meta.model_name), args=(parent_obj.id, history_obj.pk))