答案 0 :(得分:2)
嗯,一个简单的方法就是构建你想要的url,并将其传递给模板:
databrowse_url = '/'.join((obj._meta.app_label, obj._meta.module_name, 'objects', str(obj.id)))
然后在模板中(假设你的数据库位于/databrowse
:
<a href="/databrowse/{{ databrowse_url }}">
哪个会给你一个网址:/databrowse/app_name/model_name/objects/1
。
答案 1 :(得分:0)
您可以使用databrowse urls.py
中显示的格式重新创建数据存储网址您可以通过传递视图名称+参数来使url tag在模板中工作。
但是,如果你browse the source,看起来databrowse会为它使用的对象添加'url'属性。
修改强>
给定EasyModel实例,您可以执行以下操作:
my_easy_model_instance.url()
大多数'Easy'类都有一个url()或urls()方法。
答案 2 :(得分:0)
结束编写mixin类,获取相关的EasyInstance并重用url()
:
from django.contrib.databrowse.datastructures import EasyModel
from django.contrib.databrowse import site
class DatabrowseMixin:
def url(pyClass):
if not site.root_url:
#hack, but root_url is not set until the first databrowse view
#and resolving urlconf does not work either
site.root_url = '/databrowse/'
easy_model = EasyModel(site, pyClass.__class__)
obj = easy_model.object_by_pk(pyClass.pk)
return obj.url()
class MyModel(models.Model, DatabrowseMixin):
...
现在在我的模板中,我可以重用指向数据行中对象网址的my_model_instance.url
标记。