【问题标题】:django chain selectdjango链选择
【发布时间】:2010-12-27 05:27:14
【问题描述】:

django-smart-selects 是一个优雅的解决方案,它使 Django 开发人员能够在其表单中链接选择输入。但正如开发人员在其问题列表中报告的那样,在表单集中使用时效果不佳。

它呈现的 javascript 与模型定义中“链式字段”的 id 相关联。

您认为这在表单集中使用时如何发挥作用?我认为小部件的渲染方法(请参阅 django-smart-selects 代码)需要以某种方式了解表单集(理想情况下,表单前缀)。但是怎么做呢?

【问题讨论】:

  • 好吧,为了让它与表单集一起使用,我计划手动渲染表单/表单集和所需的 javascript。只是寻找一些关于如何实现这一点的指示。

标签: javascript jquery ajax django


【解决方案1】:

我试过这个并且它有效 --- 在 django-smart-selects 代码的 widgets.py 文件中,只需复制处理渲染 javascript 的部分并将其从文件中删除。删除将此(现已删除)javascript 连接到输出的行。

对于您的表单集,请自行完成完整的渲染。也就是说,在您的模板中,不要只做 {{ form }} 或 {{ formset }} 或其他任何东西,而是通过在 {% for form in formset.形成 %} 循环。

粘贴您从 widgets.py 复制的 javascript 代码,并使用带有 {{ form.field.html_name }} 的 javascript 中的 ID 对其进行自定义

按照代码中的模式,在 javascript 中编写您自己自定义的 url。

瞧!

【讨论】:

  • 唯一的问题是 javascript 没有正确获取 ID。您的“解决方案”涉及消除大量自动魔术并解决核心问题。好一个。我想这里真正的宝石是 {{ form.field.html_name }}。
【解决方案2】:

确保在 javascript 使用的元素 ID 中使用表单集的名称/id/index,这样它们仍然是唯一的

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    • 2011-03-28
    • 2016-10-02
    • 1970-01-01
    • 2012-08-28
    相关资源
    最近更新 更多