Python 在django中添加可编辑选项

Python 在django中添加可编辑选项,python,django,autocomplete,Python,Django,Autocomplete,我试图在django中添加一个可编辑的choicefield,如图所示,已经对此进行了一些研究。不幸的是,像django autocomplete这样的解决方案并不能完全满足我的需要。自动完成看起来不错,但如果这样做,我需要创建一个django模式来通过url视图请求生成选项,但在我的情况下,没有必要这样做,我只需要将ip地址的这3个选项放在下拉列表中,选择其中一个,然后编辑或提交 我找到了解决方案,但它们不太适合我的需要: 如果您只想使用这三个条目,最快的方法是使用数据列表,它只需要添加到

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

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

如果您只想使用这三个条目,最快的方法是使用
数据列表,它只需要添加到HTML的某个地方


网络地址
192.168.0.0/24
10.0.0.0/24
172.16.0.0/24
如果您只想使用这三个条目,最快的方法是使用
数据列表,它只需要添加到HTML的某个地方


网络地址
192.168.0.0/24
10.0.0.0/24
172.16.0.0/24

如果您的选项可能永远不会更改,您可以像上面的答案一样将它们硬编码到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)
    ...
<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>
在模板中呈现表单对象后,它将生成如下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)
    ...
<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>
网络地址:
192.168.0.0/24
10.0.0.0/24
172.16.0.0/24

这样以后如果需要,可以更容易地更改
ip\u列表
,而且它可以将所有代码保存在一个地方。文档中对此进行了解释。

如果您的选项可能永远不会更改,您可以像上面的答案一样将它们硬编码到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)
    ...
<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>
在模板中呈现表单对象后,它将生成如下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)
    ...
<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>
网络地址:
192.168.0.0/24
10.0.0.0/24
172.16.0.0/24

这样以后如果需要,可以更容易地更改
ip\u列表
,而且它可以将所有代码保存在一个地方。这在文档中有解释。

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