Mil*_*ano 3 python django django-admin python-3.x
我需要在Django管理change页面中保留有关过滤和搜索的信息。
因此,当用户按 过滤时"?away_team__id__exact=267821",我需要将此查询附加到change pageurl。
假设我们通过上面的查询过滤了对象。这是更改列表的网址:
http://127.0.0.1:8000/matches/match/?away_team__id__exact=267821
Run Code Online (Sandbox Code Playgroud)
我想制作change将用户重定向到change当前对象页面并将查询附加到 url 的列,而不是:
http://127.0.0.1:8000/matches/match/2009/change/
Run Code Online (Sandbox Code Playgroud)
网址将是:
http://127.0.0.1:8000/matches/match/2009/change/?away_team__id__exact=267821
Run Code Online (Sandbox Code Playgroud)
问题是我无法在自定义列方法中访问请求。我尝试使用模板语言来做到这一点,但没有成功,我得到:
http://127.0.0.1:8000/matches/match/1996/change/?{{%20request.GET.urlencode%20}}
Run Code Online (Sandbox Code Playgroud)
这是方法:
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>")
Run Code Online (Sandbox Code Playgroud)
你知道怎么做吗?
编辑
这是因为我需要在对象页面中创建一个NEXT和PREVIOUS按钮,change以便用户可以直接进入下一个对象。
您可以将管理实例上的当前请求存储在更改列表视图中,以使其可用于后续方法:
class YourAdmin(ModelAdmin):
def changelist_view(self, request, *args, **kwargs):
self.request = request
return super().changelist_view(request, *args, **kwargs)
def change(self, obj):
request = getattr(self, 'request', None)
if request:
# use request.GET to construct the link
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2222 次 |
| 最近记录: |