2013-09-25 98 views
0

我想從request得到一個值,真的很驚訝錯誤正在提出。從請求獲取一個值,django

def product_view(request): 
    lookup_type_user = request.GET.get('lookup_type', '') 

    LOOKUP_TYPE_CHOICES = (
       ('gt', '>'), 
       ('lt', '<'),  
      ) 

    class ProductFilter(django_filters.FilterSet): 
     lookup_type = django_filters.ChoiceFilter(choices=LOOKUP_TYPE_CHOICES) 
     price = django_filters.NumberFilter(lookup_type=lookup_type_user) 

該行基本相同,工作正常。

price = django_filters.NumberFilter(lookup_type='gte') 

我不發佈錯誤消息,因爲它是一個包相關之一,因爲上面,我提供的手lookup_type行並沒有提出什麼我assumming它無關,與包裝,但上面的代碼。

你能看到這裏出了什麼問題嗎?

@EDIT

有沒有一種方法我可以打印出request,看看它究竟包含?

+0

此代碼是什麼?大概它並不是在一個地方。或者你真的在視圖函數中定義了ProductFilter? –

+0

當您導入此文件時,會查看'lookup_type_user'一次。我假設你得到一個像「請求不存在」的錯誤? –

+0

什麼是URL?是否適當傳遞了「>」? – Rohan

回答

0

我明白了。這是我的無知。我不得不在forms.py中重新定義lookup_type。就像這樣:

lookup_type = forms.ChoiceField(choices=LOOKUP_TYPE_CHOICES) 

,而不是:

lookup_type = django_filters.ChoiceFilter(choices=LOOKUP_TYPE_CHOICES) 

因爲什麼Django的過濾器正在做,它試圖過濾lookup_type場,這並不在我的模型存在。這是拋出一個錯誤FieldError at/. Cannot resolve keyword 'lookup_type' into field,我不知道,因爲我正在使用另一個應用程序 - django_tables2修改此錯誤的其他東西,這成功欺騙了我。

它現在可能是一個無用的線程,但我只是想讓試圖解決這個問題的朋友知道。