【问题标题】:Add editable choices in django在 django 中添加可编辑的选项
【发布时间】:2016-08-02 08:07:28
【问题描述】:

我正在尝试在 django 中添加一个可编辑的选择字段,就像图片一样,已经对此进行了一些研究。不幸的是,像 django-autocomplete 这样的解决方案并不能完全满足我的需求。自动完成看起来不错,但如果这样做,我需要创建一个 django 模态来通过 url 查看请求生成选择,但在我的情况下,没有必要这样做,我只需将这 3 个选项用于 ip 地址在下拉列表中,选择其中之一,然后编辑或提交。

我找到的解决方案,但它们不太适合我的需要:

Django admin: Change selected box of related fields to autocomplete

Django editable dropdown field

【问题讨论】:

  • 我发现使用 jquery-ui 自动完成和 ajax 调用来获取选项(或者如果你想要静态选项,可以直接将它们放在自动完成 javascript 代码中)是最好的方法。

标签: python django autocomplete


【解决方案1】:

如果您想使用这三个条目,最快的方法是使用datalist,只需将其添加到您的 HTML 中的某个位置。

<div id="page-wrapper">
    <label for="ip">Network address</label>
    <input type="text" id="ip" list="ip-datalist">
    <datalist id="ip-datalist">
      <option>192.168.0.0/24</option>
      <option>10.0.0.0/24</option>
      <option>172.16.0.0/24</option>
    </datalist>
</div>

【讨论】:

    【解决方案2】:

    如果您的选项可能永远不会改变,您可以像上面的答案一样将它们硬编码到您的 html 中。如果您使用表单生成下拉列表,那么最好执行以下操作:

    class MyForm(forms.Form):
    
        ip_list = ((1, '192.168.0.0/24'), (2, '10.0.0.0/24'),
            (3, '172.16.0.0/24'), )
    
        network_address = forms.ChoiceField(label='Network Address',
            choices=ip_list)
        ...
    

    一旦您在模板中呈现表单对象,它最终会生成如下所示的 html:

    <label for="id_network_address">Network Address:</label>
    <select id="id_network_address" name="network_address">
        <option value="1">192.168.0.0/24</option>
        <option value="2">10.0.0.0/24</option>
        <option value="3">172.16.0.0/24</option>
    </select>
    

    这样,如果您需要,将来更改ip_list 会更容易,而且它会将您的所有代码保存在一个地方。这在文档here 中有解释。

    【讨论】:

      猜你喜欢
      • 2011-12-13
      • 2013-06-03
      • 2017-04-19
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2013-11-30
      • 1970-01-01
      相关资源
      最近更新 更多