为Django Simple History历史对象生成url

时间:2018-01-31 22:07:52

标签: django django-simple-history

给定一个名为Stuff的模型,我想要一个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

1 个答案:

答案 0 :(得分:0)

经过深入挖掘,我在简单的历史源代码中发现,网址名称与管理员更改名称类似,即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))