我试图在django中添加一个可编辑的选择域,就像图片一样,已经对此做了一些研究。不幸的是,像django-autocomplete这样的解决方案并不能完全满足我的需求。自动完成看起来很好,但是如果这样做,我需要创建一个django模式来通过url视图请求生成选择,但在我的情况下,它没有必要这样做,我只需要把这3个选项下拉列表中的IP地址,然后选择其中一个,然后编辑或提交。
我找到的解决方案,但它们不太适合我的需要:
Django admin: Change selected box of related fields to autocomplete
答案 0 :(得分:0)
如果您想使用 这三个条目,最快的方法是使用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>
答案 1 :(得分:0)
如果您的选项可能永远不会改变,您可以将它们硬编码到您的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中进行了解释。