【发布时间】:2019-01-29 23:32:54
【问题描述】:
我需要在Django admin change 页面中保留有关过滤和搜索的信息。
所以当用户按"?away_team__id__exact=267821" 过滤时,我需要将此查询附加到change page url。
假设我们通过上面的查询过滤了对象。这是更改列表的网址:
http://127.0.0.1:8000/matches/match/?away_team__id__exact=267821
我想创建change 列,将用户重定向到当前对象的change 页面,并将查询附加到url,因此:
http://127.0.0.1:8000/matches/match/2009/change/
网址将是:
http://127.0.0.1:8000/matches/match/2009/change/?away_team__id__exact=267821
问题是我无法在自定义列方法中访问请求。我尝试使用模板语言来做,但没有成功,我得到:
http://127.0.0.1:8000/matches/match/1996/change/?{{%20request.GET.urlencode%20}}
这是方法:
def change(self,obj):
return mark_safe(f"""<a class="changelink" href="{reverse("admin:matches_match_change",args=(obj.pk,))}"""+"?{{ request.GET.urlencode }}\""+"><span class='icon'>Zmeniť</span></a>")
你知道怎么做吗?
编辑
这是因为我需要在change 对象页面中创建NEXT 和PREVIOUS 按钮,以便用户可以直接进入下一个对象。
【问题讨论】:
-
您可以从
request.META['HTTP_REFERER']的更改视图本身的更改列表中提取查询字符串,以便处理该信息。 -
@schwobaseggl 覆盖更改视图是个好主意,我不知道管理员中有 change_view 功能。谢谢
-
@schwobaseggl 嗯,但是当用户第一次点击 NEXT 按钮时,HTTP_REFERER 将一文不值...
标签: python django python-3.x django-admin