没有 Forms.py 的原始代码:https://dpaste.org/jAi2
下面是它的样子:
https://i.stack.imgur.com/qdMjE.jpg
https://i.stack.imgur.com/cG6Jd.jpg
我想完全重写此代码以使用 forms.py 和更新的 models.py。还有使用表单的选项。形式,形式。ModelForm, django-filters, django-select2, modelmultiplechoicefield, modelchoicefield,但不确定最好的方法是什么。
我想完成以下几件事:
1( 表单验证
2(每次我想添加新主题时,与其SSH进入服务器以手动更新HTML主题下拉菜单选项和 models.py 中的SUBJECT_CHOICES,我希望能够通过从127.0.0.1:8000/admin中添加/删除主题来更新主题。我需要按字母顺序在主题下拉菜单中填充一个重复的主题列表,可能使用循环模板或其他方法。
3(课程可以有很多科目(而不仅仅是一个( - (例如苹果既可以是技术科目,也可以是商业科目(。循环模板需要单独显示每门课程的所有主题。例如,课程苹果将展示商业和技术作为主题。
我开始为表单编写代码,但没有取得多大成功。
我尝试过的:
https://dpaste.org/yQ4S
任何帮助将不胜感激。
1(你仍然想使用表单验证,即使在GET请求上也是如此。任何时候处理用户输入时,都必须对其进行验证。
2( 如果将选项存储在模型中,则可以通过让选项字段从该模型的查询集中提取这些选项来动态自动更新选项。只要确保它是在方法中完成的,而不是在模块的顶层(仅在服务器进程启动时执行(。
3( 您可以使用<optgroup>
元素对<select>
元素中的选项进行分组。如果您将格式正确的列表传递给ChoiceField()
,我不确定是否有自动处理此问题的内容,但您可以使用自定义小部件渲染来处理这个问题。