2009-03-08 20 views
9

Bir Django uygulamasında çalışıyorum. Ben bir "yeni kullanıcı" HTML formu oluşturmak için bir ModelForm kullanıyorumVarsayılan olarak seçili Django ModelForm menü öğesini nasıl yapabilirim?

GENDER_CHOICES = (
     ('M', 'Male'), 
     ('F', 'Female'), 
    ) 
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True) 

: aşağıda tanımlandığı gibi benim modellerinden biri olan "Kullanıcı", bir "cinsiyet" alanı kapsamaktadır. Google-fu'm beni başarısız gösteriyor - bu HTML formunu, açılır kutuda varsayılan olarak "Erkek" öğesini seçebilir miyim? (Yani bu kadar selected="selected" Bu öğe için.)

cevap

15

, sonra anahtarı olarak alanın adını kullanarak model formu kurucusuna bir 'ilk' sözlüğünü pass:

form = MyModelForm (initial={'gender':'M'}) 

-VEYA-

Forms API bildirim niteliğini kullanarak bir ModelForm belirli özelliklerini geçersiz kılabilir. Ancak, muhtemelen bu kullanım durumu için biraz hantal ve ben sadece bunu yapabileceğini göstermek için bahsetti. Bunun için gelecekte başka kullanımları bulabilirsiniz.

class MyModelForm (forms.ModelForm): 
    gender = forms.ChoiceField (choices=..., initial='M', ...) 
    class Meta: 
     model=MyModel 

-VEYA-

Eğer modelin belirli bir örneğine bağlı bir ModelForm istiyorsanız, o seçilmiş değeri çekmeye Django neden senin modelin 'örneğini' geçebilir modeli.

form = MyModelForm (instance=someinst) 
+0

Aslında, sadece sizin modelinizde bir örneğini geçtiğinizde, Django'nun seçilen değeri HTML'de göstermediğini öğrendim. Metin giriş alanları için gayet iyi çalışıyor ancak seçime giriş için de buna ihtiyacım var. Bu konuda bir fikrin var mı? – GChorn

+0

@GChorn Seçme alanları için de çalışmalı, bu yüzden başka bir şey olabilir. Yeni bir soru oluşturmanızı ve ilgili kodu yayınlamanızı öneriyorum; böylece daha fazla sayıda kişiye göz atabilirsiniz. –

+0

Merhaba Joe, cevabınız için teşekkürler, evet aslında bunu dün yaptım ama henüz cevap yok: http://stackoverflow.com/q/16056045/1256700 – GChorn

7

Şüphesiz default hile yapacak?

örn. Seçili varsayılan bir değeri olan bir boş bir form gerekiyorsa

gender = models.CharField(max_length=1, choices=GENDER_CHOICES, default='M', null=True)
+0

+1 ; o da çalıştı; Teşekkürler. – RexE

İlgili konular