0

我正在尝试从中获取价值,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手动提供的行没有提出任何问题,我认为它与该包无关,但与上面的代码无关。

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

@编辑

有没有办法打印出来request看看它到底包含什么?

4

1 回答 1

0

我让它工作了。这是我的无知。我不得不重新定义lookup_typeforms.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 将此错误修改为其他内容,这成功地欺骗了我。

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

于 2013-09-25T13:18:01.497 回答