Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django使用多对多数据库选项填充下拉菜单_Python_Django_Django Models_Django Forms_Django Templates - Fatal编程技术网

Python Django使用多对多数据库选项填充下拉菜单

Python Django使用多对多数据库选项填充下拉菜单,python,django,django-models,django-forms,django-templates,Python,Django,Django Models,Django Forms,Django Templates,我想用主题表中的记录填充我的下拉菜单,这是一个多对多选项字段,通过从管理页面手动添加主题来填充。一门课程可以有许多科目,如“商业”和“营销” 代码: 我将如何使用django-select2或使用带有model select或multiple model select的表单 或者我可以用模板上的for循环来实现 对于循环,我尝试过,但没有成功: 预期结果: 有人能帮我弄清楚吗?我已经被困了一段时间了。创建模型表单后,您可以使用类似的方法获得下拉列表 class CourseForm(

我想用主题表中的记录填充我的下拉菜单,这是一个多对多选项字段,通过从管理页面手动添加主题来填充。一门课程可以有许多科目,如“商业”和“营销”

代码:

我将如何使用django-select2或使用带有model select或multiple model select的表单

或者我可以用模板上的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 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>

希望这能帮助您在查询多对多字段时忽略.all()。您还没有深入到多对多字段的实际名称,因此您试图在循环中打印对象

示例视图:

def tester(request):

    tes = Test.objects.get(id=1)
    testlist = tes.category.all()
    context = {
        'test': testlist,
    }
    return render(request, 'core/t.html', context)
循环示例:

{% for item in test %}
<p>- {{item.cat}}</p>
{% endfor %}
嵌套循环示例:

{% for item in item_list %}
<h2>{{ item.name }}</h2>
<ul>
    {% for sub in item.subjects.all %}
    <li><a href="#" id="">{{ sub.name }}</a></li>
    {% endfor %}
</ul>
{% endfor %}
{%用于项目列表%中的项目]
{{item.name}
    {item.subjects.all%中的子项为%s}
  • {%endfor%}
{%endfor%}
希望这能帮助您在查询多对多字段时忽略.all()。您还没有深入到多对多字段的实际名称,因此您试图在循环中打印对象

示例视图:

def tester(request):

    tes = Test.objects.get(id=1)
    testlist = tes.category.all()
    context = {
        'test': testlist,
    }
    return render(request, 'core/t.html', context)
循环示例:

{% for item in test %}
<p>- {{item.cat}}</p>
{% endfor %}
嵌套循环示例:

{% for item in item_list %}
<h2>{{ item.name }}</h2>
<ul>
    {% for sub in item.subjects.all %}
    <li><a href="#" id="">{{ sub.name }}</a></li>
    {% endfor %}
</ul>
{% endfor %}
{%用于项目列表%中的项目]
{{item.name}
    {item.subjects.all%中的子项为%s}
  • {%endfor%}
{%endfor%}

post your forms.pyfile@user6837382我实际上没有那个文件。你必须创建一个模型表单,这里是链接:@user6837382好的,然后会发生什么?如何让它填充下拉菜单?发布您的表单.pyfile@user6837382我实际上没有那个文件。你必须创建一个模型表单,这里是链接:@user6837382好的,然后会发生什么?我如何让它填充下拉菜单?我把你的代码放在哪里?在models.py中?我会用科目或课程来代替你的模型吗?什么是。。。。。。对于为什么我需要在下拉菜单中使用单选按钮或复选框?我会使用ModelMultipleChiceField而不是ModelChoiceField吗?创建一个forms.py文件并在那里编写代码,您的模型将是课程,小部件是可选的,您可以使用ModelMultipleChoice Field更新答案,将课程中的字段添加到虚线位置。仍然没有得到所需的结果。我错过什么了吗?我需要在HTML中执行任何操作吗?我做对了吗?->。当你说字段时,应该是课程模型中的name或slug,对吗?应该是字符串吗?更新后的答案中还显示了一个基本表单模板示例,如果用户想要创建课程,您可以创建一个视图,然后将表单作为上下文传递给使用此模板,我将代码放在何处?在models.py中?我会用科目或课程来代替你的模型吗?什么是。。。。。。对于为什么我需要在下拉菜单中使用单选按钮或复选框?我会使用ModelMultipleChiceField而不是ModelChoiceField吗?创建一个forms.py文件并在那里编写代码,您的模型将是课程,小部件是可选的,您可以使用ModelMultipleChoice Field更新答案,将课程中的字段添加到虚线位置。仍然没有得到所需的结果。我错过什么了吗?我需要在HTML中执行任何操作吗?我做对了吗?->。当你说字段时,应该是课程模型中的name或slug,对吗?应该是字符串吗?更新后的答案中还显示了一个基本表单模板示例,如果用户想要创建课程,您可以创建一个视图,然后将表单作为上下文传递给使用此模板的用户。您可以帮助我使其符合我的代码吗?我试着按照你的建议去做,但是我没有从for循环中得到想要的结果。1.我在示例中使用了基于函数的视图,因此通过将其添加到基于类的视图中,它甚至不会显示出来。因此,要么将其用作独立视图,要么使其成为基于类的视图。您的代码有一个拼写错误,它不是testlist=test.category.all(),而是testlist=test.subjects.all(),这是有意义的。是否有可能以某种方式将其放在CourseListView中?这就是url.py指向的->路径(“”,CourseListView.as_view(),name='list')。我希望能够在course_list.html页面上显示下拉列表。我尝试将该函数放在CourseListView函数之外,但仍然没有产生预期的结果。还修复了输入错误。我避免了客户端生产应用程序的内置ListView,因为它感觉有局限性。这是一个有争议的意见,虽然哈哈。所以我不是最好的一个回答。但是您可以在主for循环中尝试在模板中使用“your_object.subjects.all()”嵌套循环。同样,我避免在模板中做那么多的逻辑,所以我在这里做了扩展。你能帮我满足我的代码吗?我试着按照你的建议去做,但是我没有从for循环中得到想要的结果。1.我在示例中使用了基于函数的视图,因此通过将其添加到基于类的视图中,它甚至不会显示出来。因此,要么将其用作独立视图,要么使其成为基于类的视图。您的代码有一个拼写错误,它不是testlist=test.category.all(),而是testlist=test.subjects.all(),这是有意义的。是否有可能以某种方式将其放在CourseListView中?这就是url.py指向的->路径(“”,CourseListView.as_view(),name='list')。我希望能够在course_list.html页面上显示下拉列表。我试着把这个函数