【问题标题】:Django Search Form Errors When Adding to_form_field添加 to_form_field 时出现 Django 搜索表单错误
【发布时间】:2020-03-03 10:29:21
【问题描述】:

每当我尝试将 to_form_field 添加到主题和会员表单字段时,都会收到以下错误:

ValueError: int() 以 10 为底的无效文字:'Programming'

ValueError: int() 以 10 为底的无效文字:'Free'

字段 'id' 需要一个数字,但得到的是 'Programming'。

字段 'id' 需要一个数字,但得到了 'Free'。

不带 to_form_name 的网址:

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

带有 to_form_name 的网址:

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 中添加了数字,这是不可取的。

【问题讨论】:

  • 你能分享回溯吗?
  • @Iain Shelvington 我添加了回溯。请刷新。

标签: python django django-models django-forms django-views


【解决方案1】:

您在ModelChoiceFields 上使用to_field_name,因此您需要通过为这些参数设置的字段进行查询

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

【讨论】:

  • 完美!我很快就会提出另一个关于使用相同代码进行排序的问题。敬请期待。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-07-13
  • 2021-07-09
  • 2010-09-07
  • 1970-01-01
  • 2012-01-28
  • 2018-08-08
  • 2012-10-03
相关资源
最近更新 更多