栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django / jQuery级联选择框?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django / jQuery级联选择框?

你可以将一个隐藏字段设置为具有真正的“状态”值,然后使用jQuery创建

<select>
列表,然后
.select()
将其值复制到该隐藏字段中。然后,在页面加载时,你的jQuery代码可以获取隐藏字段的值,并在
<select>
填充后使用它在元素中选择合适的项目。

这里的关键概念是“状态”弹出菜单是一种完全使用jQuery创建的小说,而不是Django形式的一部分。这使你可以完全控制它,同时让所有其他字段正常工作。

编辑:还有另一种方法,但是它不使用Django的表单类。

在视图中:

context = {'state': None, 'countries': Country.objects.all().order_by('name')}if 'country' in request.POST:    context['country'] = request.POST['country']    context['states'] = State.objects.filter(        country=context['country']).order_by('name')    if 'state' in request.POST:        context['state'] = request.POST['state']else:    context['states'] = []    context['country'] = None# ...Set the rest of the Context here...return render_to_response("addressform.html", context)

然后在模板中:

<select name="country" id="select_country">    {% for c in countries %}    <option value="{{ c.val }}"{% ifequal c.val country %} selected="selected"{% endifequal %}>{{ c.name }}</option>    {% endfor %}</select><select name="state" id="select_state">    {% for s in states %}    <option value="{{ s.val }}"{% ifequal s.val state %} selected="selected"{% endifequal %}>{{ s.name }}</option>    {% endfor %}</select>

你还需要通常的Javascript,以便在更改国家/地区后重新加载州选择器。

我尚未对此进行测试,因此其中可能有几个漏洞,但应该可以理解。

因此,你的选择是:

  • 使用Django表单中的隐藏字段获取实际值,并通过AJAX在客户端创建选择菜单,或者
  • 抛弃Django的Form内容并自己初始化菜单。
  • 创建一个自定义Django表单窗口小部件,该窗口小部件尚未完成,因此将不对其进行评论。我不知道这是否可行,但看来你需要Select在中添加MultiWidget,而常规文档中未记录后者,因此你必须阅读源代码。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/411152.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号