我想通過URL將變量傳遞給django管理中的另一個頁面。 它似乎不工作,我想通過變量「/?name = hello」,並通過request.GET.get [「名稱」,「」],但網址變成「/?e = 1 「它通過後。 如果我使用默認參數'q',它可以工作,但它會產生衝突。 看來這個問題只是django-admin。我需要通過URL傳遞它沒有發佈... 沒有任何一個知道如何解決這個問題Django管理員:通過URL傳遞變量
感謝
我想通過URL將變量傳遞給django管理中的另一個頁面。 它似乎不工作,我想通過變量「/?name = hello」,並通過request.GET.get [「名稱」,「」],但網址變成「/?e = 1 「它通過後。 如果我使用默認參數'q',它可以工作,但它會產生衝突。 看來這個問題只是django-admin。我需要通過URL傳遞它沒有發佈... 沒有任何一個知道如何解決這個問題Django管理員:通過URL傳遞變量
感謝
你能解釋一下你的問題多一點....爲什麼你想傳遞一個變量Django管理... 還你不能趕上GET變量像這樣... 要麼使用:
request.GET['name']
或
request.GET.get('name','')
.get是一種實例方法,不是字典。
我用它request.GET.get('name','')。 我想將這個變量傳給管理員,告訴他哪些報告顯示出來。 q = 0顯示提交的報告。 q = 1以顯示已被分配的rpoets等。 – Grey 2010-08-17 03:17:10
我只能通過使用參數q來執行此操作。其中q由搜索字段使用。很好。但現在我需要使用搜索字段。和q將用於此。所以我需要真正解決它。 – Grey 2010-08-17 03:26:25
你可能會認爲我爲什麼不考慮POST。原因是,如果有更多的報告可以顯示一個頁面。 djang admin使用p = 1,p = 2來使用多個頁面來顯示所有報告。但如果我不使用GET,它會鬆動跟蹤 – Grey 2010-08-17 03:27:56
問題是當get_query_set
試圖將其作爲模型字段解析時,查找name
不存在。因此會引發一個IncorrectLookupParameters()
異常,然後重定向到不太有用的「e = 1」網址。這個問題在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, 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
無厘頭,'request.GET.get [ 「名稱」, 「」]'會導致'TypeError'。 – 2010-08-16 20:50:15