Jquery Django模板创建div.selector框

Jquery Django模板创建div.selector框,jquery,html,django,django-forms,django-templates,Jquery,Html,Django,Django Forms,Django Templates,我正在使用Django 1.9,在管理部分我看到了以下结构: 我想在我的表单模板中实现一个这样的选择器——两个框,左边一个填充了一些类对象。右边的是空的,当我点击方框之间的箭头时,项目会相应地移动。最后,在表单中,我希望能够对正确框中所选的项目进行处理 我搜索了“html选择器”,但没有任何好结果。我该怎么做呢?好的,你没有直接解决上述问题的方法,因此你没有直接找到解决方法 我能想到的一个可能的解决方案是使用Javascript进行前端操作。以下是您可以做的: 在html中有两个不同的div,

我正在使用Django 1.9,在管理部分我看到了以下结构:

我想在我的表单模板中实现一个这样的选择器——两个框,左边一个填充了一些类对象。右边的是空的,当我点击方框之间的箭头时,项目会相应地移动。最后,在表单中,我希望能够对正确框中所选的项目进行处理

我搜索了“html选择器”,但没有任何好结果。我该怎么做呢?

好的,你没有直接解决上述问题的方法,因此你没有直接找到解决方法

我能想到的一个可能的解决方案是使用Javascript进行前端操作。以下是您可以做的:

在html中有两个不同的div,分别是“left box”和“right box”。现在,在views.py中,返回要显示在左框中的项目列表,然后在html文件中显示在左框中

现在是重要的部分。 在左框中显示的列表必须是复选框输入类型(以便可以选择/选中或取消选择/取消选中单个项目)或任何其他选择类型的输入

现在,在左右框之间有两个按钮。 因此,您将在javascript文件中为这两个按钮编写单击函数

对于右箭头按钮,点击功能将从左框中检测所有选中的项目,将从左框中隐藏/删除它们,并将它们添加到右框中,即,您必须从javascript中创建所有的div、li和复选框输入

与左箭头按钮类似,单击功能将检测右框中的所有选定项目,将隐藏/删除右框中的项目,并将其添加到左框中

最后在底部会有一个保存按钮,它将通过GET或POST提交这些数据。但是,由于您希望在页面底部单击SAVE(保存)即可提交所有数据,这意味着左侧和右侧框都将位于一个表单下。因此,您需要有一个公共的“name”属性,即左框项目的“left input”,右框项目的“right input”,因为只有“name”和“value”对以任何html形式提交

因此,在您的视图中,当您请求.GET或POST时,您将得到一个多值字典,其中只有两个键(“左输入”和“右输入”),每个键都有一个值列表


然后,您可以将querydict转换为python dict,并对其执行任何操作。

有一个直接的解决方案

我使用了Django管理小部件,如下所示

forms.py:

from django.contrib.admin.widgets import FilteredSelectMultiple
class AForm(forms.ModelForm):
class Meta:
    model = A
    fields = (
        'name', 'nickname', )
    widgets = {
        "name": FilteredSelectMultiple("name", is_stacked=False),
        "nickname": FilteredSelectMultiple("nickname", is_stacked=False),
    }
a_template.html

<script type="text/javascript" src="/admin/jsi18n/"></script>
<script type="text/javascript" src="/static/admin/js/core.js"></script>
<script type="text/javascript" src="/static/admin/js/admin/RelatedObjectLookups.js"></script>
<script type="text/javascript" src="/static/admin/js/vendor/jquery/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>
<script type="text/javascript" src="/static/admin/js/actions.min.js"></script>
<script type="text/javascript" src="/static/admin/js/urlify.js"></script>
<script type="text/javascript" src="/static/admin/js/prepopulate.min.js"></script>
<script type="text/javascript" src="/static/admin/js/vendor/xregexp/xregexp.min.js"></script>
<script type="text/javascript" src="/static/admin/js/SelectBox.js"></script>
<script type="text/javascript" src="/static/admin/js/SelectFilter2.js"></script>

<form role="form" action="" method="post" enctype="multipart/form-data">
    {% csrf_token %}
    {{ form }}
    <div class="form-group">
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn btn-success">Save</button>
        </div>
    </div>
</form>

{%csrf_令牌%}
{{form}}
拯救

模板是最简单的,可以在短时间内进行安排…:pNo。。。这就是我发布这个问题的原因。它将进入view->form->template.html+javascript。所以…明白了。。那么,视图->表单->模板.html中的表单部分对您来说是必要的吗??我的意思是,人们可以随时查看->template.html(包含html表单)。虽然您仍然可以使用views->form->template.html,并使用javascript从表单中追加和删除项目,以便能够在视图中使用表单清理数据,但为此,您还必须使用与forms.py中相同的输入id值编写html from,这将使事情复杂化。如何处理views->template.html(包含html表单)???我从官方网站学习Django。你能帮我吗?是的,很简单。在your views.py中,你将编写一个基于类的视图,并且你的类将是TemplateView类型。这是我的web应用程序的视图之一。py->Rest你可以查看TemplateView的官方Django文档以更好地理解->这是一种方法,如下所示只要你使用Django。