gpt4 book ai didi

Django 管理员 : pass variable by URL

转载 作者:行者123 更新时间:2023-12-02 00:58:10 28 4
gpt4 key购买 nike

我想通过 URL 将变量传递到 django admin 中的另一个页面。看起来它不起作用,我想传递变量“/?name = hello”,并通过request.GET.get [“name”,“”]捕获它。但是url变成“/?e = 1”经过之后。如果我使用默认参数“q”,它可以工作,但会产生冲突。看来这个问题只是 django-admin 的问题。我需要通过网址传递而不是发布...有谁知道如何解决这个问题

谢谢

最佳答案

问题在于查找 nameget_query_set 时不存在尝试将其解析为模型字段。因此IncorrectLookupParameters()引发异常,进而重定向到不太有用的“e=1”url。这个问题在 Django 1.4 中通过引入自定义过滤器规范得到解决。在此之前,一种可能的解决方案是动态覆盖 ChangeList您的 ModelAdmins 返回的类(class)get_changelist()方法。

此解决方案适用于 Django 1.3:

class MyModelAdmin(ModelAdmin):

def get_changelist(self, request, **kwargs):
changelist_class = super(MyModelAdmin, self).get_changelist(request,
**kwargs)

class CustomChangeList(changelist_class):
def __init__(self, request, *args, **kwargs):
self._name = request.GET.get('name')
super(CustomChangeList, self).__init__(request, *args, **kwargs)

def get_query_set(self, *args, **kwargs):
if self._name:
del self.params['name']

qs = super(CustomChangeList, self).get_query_set(*args, **kwargs)

if self._name:
return qs.filter([FILTER WHAT YOU WANT HERE...])

return qs


return CustomChangeList

关于Django 管理员 : pass variable by URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3497062/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com