Django Ошибки формы поиска при добавлении to_form_field - PullRequest
0 голосов
/ 02 марта 2020

Всякий раз, когда я пытаюсь добавить поле to_form_field к полям субъекта и формы членства, я получаю следующие ошибки:

ValueError: недопустимый литерал для int () с основанием 10: «Программирование»

ValueError: недопустимый литерал для int () с основанием 10: «Свободно»

Поле «id» ожидало число, но получило «Programming».

Поле «id» ожидало число, но получил «Свободно».

URL-адрес без имени_форм:

http://127.0.0.1:8000/courses/?name=&min_views=&max_views=&min_date=&max_date=&expertise=&subject=1&membership=1

URL-адрес с именем_информ:

http://127.0.0.1:8000/courses/?name=&min_views=&max_views=&min_date=&max_date=&expertise=&subject=Programming&membership=Free

Я хотел бы иметь возможность передавать фактическую строку, а не число в URL для целей SEO. Когда я оставляю to_field_name вне forms.py, ошибки не возникает, и моя фильтрация формы поиска работает. Но это помещает числа в URL, что нежелательно.

1 Ответ

1 голос
/ 02 марта 2020

Вы используете to_field_name на своих ModelChoiceField с, поэтому вам нужно выполнить запрос по полям, установленным для этих параметров

            if subject_query:
                qs = qs.filter(subject__name=subject_query)
            if membership_query:
                qs = qs.filter(allowed_memberships__membership_type=membership_query)
...