2016-04-10 24 views
1

Bir form oluşturmak için Django kullanıyorum. Form, bir models.SmallIntegerField içerir.Varsayılan boş seçeneği kaldır ----- ile boş = True

Bu alanın bir varsayılan boş seçeneği vardır ("------" olarak görüntülenir).

Bu boş seçenekten nasıl kurtulabilirim?

Lütfen alanın gerekli olmadığını unutmayın (boş = Doğru), bu nedenle default=None, blank=False çözümü benim durumumda çalışmaz.

+0

Alan zorunlu değilse, boş seçeneği neden kaldırmak istiyorsunuz? – dietbacon

+0

Kullanıcı "veri yok" onay kutusunu seçebileceğinden ve işaretlenmişse alan gerekli olmadığından. Kontrol edilmediyse, alan gereklidir. – Vingtoft

+0

Ve RadioSelect parçacığı kullandığım için "----" alanı ile garip görünüyor. – Vingtoft

cevap

0

Çözümü kendim buldum: Onun hacky ve çirkin, ama işe yarıyor.

Daha iyi bir çözüm bulursanız yorum yapmaktan veya başka bir yanıt göndermekten çekinmeyin.

class myModelForm(ModelForm): 
    def __init__(self, *args, **kwargs): 
     super(myModelForm, self).__init__(*args, **kwargs) 
     self.fields['choose'].choices = self.fields['choose'].choices[1:] 

    class Meta: 
     model = myModel 
     widgets = { 
      'choose': RadioSelect(), 
     } 
+0

Bir başka seçenek de, aletin alt sınıfının oluşturulması ve her zaman ilk seçeneği kaldıran bir js dosyası yüklemesidir. Bunun daha iyi olduğunu düşünmeyin. – dietbacon

+0

Bu muhtemelen işe yarayacak, ama kesmek eşit derecede çirkin gibi geliyor ;-) – Vingtoft

İlgili konular