#python #django
#python #django
Вопрос:
Почему этот код:
products_model = Product.objects.filter(sub_category__name__iexact=sub)
supplier_filter = SupplierFilter(request.GET, queryset=products_model)
products = supplier_filter.qs
Выдает мне эту ошибку:
Field 'id' expected a number but got 'BYGGMAX'.
У меня были проблемы с этим сейчас. Может кто-нибудь объяснить, что происходит. Когда я использую метод filter, фильтровать модель сложнее, как так? Действительно интересно узнать больше о том, как это работает.
Комментарии:
1. Можете ли вы предоставить детали модели?
Ответ №1:
Хотя я не знаю, что внутри request.GET
, но кажется, что у него есть ключ id
со значением 'BYGGMAX'
. Итак, когда вы обращаетесь supplier_filter.qs
, он пытается добавить фильтр с помощью id='BYGGMAX'
. Но поскольку id
поле является типом данных int, поэтому оно вызвало эту ошибку. Что вы можете сделать, так это убедиться, что id
имеет правильное значение в request.GET
или не передается id
в request.GET
соответствии с вашими потребностями.
Вы можете просмотреть кодовую базу, чтобы понять больше. https://github.com/carltongibson/django-filter/blob/56eaae15e4fab97483e1353080a0c320f18c1014/django_filters/filterset.py#L237