2016-04-11 16 views
1

Resimde olduğu gibi django'da düzenlenebilir bir seçim alanı eklemeye çalışıyorum, zaten bunun üzerinde biraz araştırma yapıyorum. Ne yazık ki, django-autocomplete gibi bir çözüm benim ihtiyaçlarını tam olarak karşılamıyor. Otomatik tamamlama iyi görünüyor, ancak bunu yaparsanız, bir url görünümü isteği aracılığıyla seçimleri oluşturmak için bir django modal oluşturmak gerekir, ama benim durumumda, bunu yapmak gerekmez, sadece ip adres için bu 3 seçimleri koymak gerekir açılır listeden bir tanesini seçip düzenleyin veya gönderin.Django'da düzenlenebilir seçenekler ekle

çözümler buldum ama onlar değil çok iyi benim ihtiyacı uygun: Eğer sadece bu üç girdileri kullanmak istiyorsanız

Django admin: Change selected box of related fields to autocomplete

Django editable dropdown field

enter image description here

+0

JQuery-ui autocomplete ve seçenekleri almak için bir ajax çağrısı kullanarak buldum (ya da statik seçenekleri istiyorsanız, bunları doğrudan otomatik tamamlama javascript koduna koyabilirsiniz) bunu yapmanın en iyi yoluydu. –

cevap

0

En hızlı yol bir datalist kullanmaktır, sadece HTML'inize bir yere eklenmelidir. seçenekleriniz asla değişmeyecek olasılığı varsa

<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>

0

, yukarıdaki cevap gibi html'nizin içine kod olarak başladı. Bir formu kullanarak açılan üreten ediyorsanız ancak böyle bir şey yapmak için daha iyi olurdu:

<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> 
:

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) 
    ... 

kez böyle üreten html biter Şablonunuzdaki form nesnesi işlemek

Bu şekilde, gerekiyorsa ip_list'u değiştirmek daha kolaydır, ayrıca tüm kodunuzu tek bir yerde tutar. Bu, here belgelerinde açıklanmıştır.