【问题标题】:Django Need Help Re-writing Search/Filter FormDjango 需要帮助重写搜索/过滤表单
【发布时间】:2019-12-15 20:42:41
【问题描述】:

没有Forms.py的原始代码:https://dpaste.org/jAi2

这是它的样子:

https://imgur.com/a/Iw9lk6I

https://imgur.com/a/lYeT2Rf

我想完全重写此代码以使用 forms.py 和更新的 models.py。还有使用 forms.Form、forms.ModelForm、django-filters、django-select2、modelmultiplechoicefield、modelchoicefield 的选项,但不确定最好的方法是什么。

有几件事我想完成:

1) 表单验证

2) 每次我想添加新主题时,我都希望能够通过添加/删除来更新主题,而不是通过 SSH 连接到服务器以手动更新来自 models.py 的 HTML 主题下拉菜单选项和 SUBJECT_CHOICES他们来自 127.0.0.1:8000/admin。我需要在主题下拉菜单中按字母顺序填充重复的主题列表,可能使用循环模板或其他方法。

3) 课程可以有很多科目(不仅仅是一个)——(例如,Apple 既可以是技术学科,也可以是商业学科)。循环模板需要单独显示每门课程的所有主题。例如。当然,Apple 会将商业和技术作为主题。

我开始为表单编写代码,但没有取得多大成功。

我尝试过的:

https://dpaste.org/yQ4S

任何帮助将不胜感激。

【问题讨论】:

  • 您可能不想在您的代码 sn-ps 中使用dpaste.de:它们将在几天后过期。使用持久性的东西,或将相关部分作为代码块放入。

标签: python django django-models django-forms


【解决方案1】:

1) 你仍然想使用表单验证,即使是在 GET 请求上。任何时候处理用户输入时,都必须对其进行验证。

2) 如果您将选项存储在模型中,那么您可以通过让选项字段从该模型的查询集中提取这些选项来动态更新选项自动。只要确保它是在一个方法中完成的,而不是在模块的顶层(只会在服务器进程启动时执行)。

3) 您可以使用<optgroup> 元素对<select> 元素中的选项进行分组。如果您将格式正确的列表传递给ChoiceField(),我不确定是否有自动处理此问题的东西,但您可以使用自定义小部件渲染来处理它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 2021-03-25
    • 2020-08-03
    • 2014-05-20
    • 2017-03-30
    • 2013-03-15
    相关资源
    最近更新 更多