从请求获取值,django

时间:2013-09-25 11:32:20

标签: python django request django-filter

我正试图从request获取一个值,并且真的很惊讶正在提出错误。

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上面的行没有提出任何我认为它与该包无关但上面的代码。

你能看到这里出了什么问题吗?

@EDIT

有没有办法可以打印request来查看它包含的内容?

1 个答案:

答案 0 :(得分:0)

我得到了它的工作。这是我的无知。我不得不重新定义lookup_type中的forms.py。像这样:

lookup_type = forms.ChoiceField(choices=LOOKUP_TYPE_CHOICES)

而不是:

lookup_type = django_filters.ChoiceFilter(choices=LOOKUP_TYPE_CHOICES)

因为django-filter正在做什么,所以它试图过滤我的模型中不存在的lookup_type字段。它抛出了一个错误FieldError at/. Cannot resolve keyword 'lookup_type' into field,我不知道因为我正在使用另一个应用程序 - django_tables2将此错误修改为其他内容,这成功地欺骗了我。

现在这可能是一个无用的线索,但我只想让那些试图解决这个问题的人知道。