我想通过URL将变量传递给
django admin中的另一个页面.
它似乎不起作用,我想传递变量“/?name = hello”,并通过request.GET.get [“name”,“”]捕获它.但是url变为“/?e = 1”过了之后.
如果我使用默认参数’q’,它可以工作,但它会有冲突.
看来这个问题只是django-admin.我需要通过网址传递它而不是发布…
有谁知道如何解决这个问题
它似乎不起作用,我想传递变量“/?name = hello”,并通过request.GET.get [“name”,“”]捕获它.但是url变为“/?e = 1”过了之后.
如果我使用默认参数’q’,它可以工作,但它会有冲突.
看来这个问题只是django-admin.我需要通过网址传递它而不是发布…
有谁知道如何解决这个问题
谢谢
解决方法
问题是当get_query_set尝试将其解析为模型字段时,查找名称不存在.因此引发了IncorrectLookupParameters()异常,该异常又重定向到不太有用的“e = 1”url.这个问题在Django 1.4中通过引入自定义filterspecs来解决.在此之前,一种可能的解决方案是动态覆盖ModelAdmins get_changelist()方法返回的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,*args,**kwargs): self._name = request.GET.get('name') super(CustomChangeList,self).__init__(request,**kwargs) def get_query_set(self,**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