我正试图从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
来查看它包含的内容?
答案 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将此错误修改为其他内容,这成功地欺骗了我。
现在这可能是一个无用的线索,但我只想让那些试图解决这个问题的人知道。