Django admin:通过URL传递变量

前端之家收集整理的这篇文章主要介绍了Django admin:通过URL传递变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想通过URL将变量传递给 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

猜你在找的Python相关文章