python - Django 使用多对多数据库的选项填充下拉菜单
问题描述
我想用来自主题表的记录填充我的下拉菜单,这是一个多对多选择字段,通过从管理页面手动添加主题来填充主题。一门课程可以有许多科目,例如“商业”和“市场营销”。
代码:
我将如何使用 django-select2 或使用带有模型选择或多个模型选择的表单?
https://docs.djangoproject.com/en/2.2/ref/forms/fields/#modelchoicefield
https://docs.djangoproject.com/en/2.2/ref/forms/fields/#modelmultiplechoicefield
https://django-select2.readthedocs.io/en/latest/
或者也许我可以在模板上使用 for 循环来做到这一点?
对于我尝试过但没有运气的循环:
期望的结果:
有人可以帮我弄清楚吗?我已经被困了一段时间了。
解决方案
创建模型表单后,您可以使用类似这样的内容来获取下拉列表
class CourseForm(forms.ModelForm):
subjects = forms.ModelMultipleChoiceField(
queryset=Subject.objects.all(),
required=True,
)
class Meta:
model = Course
fields = [......, subjects]
或者您可以使用其他小部件,widget=forms.CheckboxSelectMultiple,具体取决于您的要求
<form method="post" action="">
<div>
{% csrf_token %}
{{ form }}
<input type="submit" class="btn btn-primary" id="submit" value="Save">
</div>
</form>
添加创建视图以创建课程,如下所示
class CourseCreateView(CreateView):
model = Course
form_class = CourseForm
template_name = 'course_form.html'
success_url = reverse_lazy('/')
推荐阅读
- javascript - 使用 JavaScript 检查是否在范围内输入数字
- reactjs - 在 React 中的 Canvas 元素上加载图像
- r - 需要使用 readRDS 从我的桌面导入 RDS 文件。确切的代码是什么?
- xamarin - 实时更新地理位置
- c# - 在 .NET Core 3.0 中使用登录
- mysql - 为什么 MariaDB 10.4.8(最新版)不能更改此列类型?
- sql - 为什么在 plpgsql 函数的循环中执行比在没有函数的情况下为每个循环独立执行要慢得多?
- c++ - 从 const ptr* 转换为 ptr* 的问题
- express - 在 Express API 中验证用户对资源的所有权?
- c++ - 聚合初始化,clang要我破坏我的代码?