2013-03-26 11 views
6
forms.DateInput

Django forms.DateInput attrs alanında verilen nitelikleri geçerli değildir

form ModelForm olduğu için Django'nın attrs belirtici yoluyla uygulamaya çalışırken

tutucu, sınıf set almıyorum.

widgets = { 
    'my_date_field': forms.DateInput(format=('%d-%m-%Y'), 
        attrs={'class':'myDateClass', 
          'placeholder':'Select a date'} 
        ) 
} 

aynı uygulanır: Burada

kodudur: docs

göre

Ve

bir daha isteğe bağlı argüman ile, TextInput aynı argümanları Alır forms.TextInput ve sadece iyi çalışıyor.

Burada nelerin eksik? alan için

class trademark_form(ModelForm): 
    my_date_field = DateField(input_formats=['%d-%m-%Y']) 
    class Meta: 
     model = myModel 

     widgets = { 
        'my_date_field': forms.DateInput(format=('%d-%m-%Y'), attrs={'class':'myDateClass', 'placeholder':'Select a date'}), 
        'field1': forms.TextInput(attrs={'class':'textInputClass', 'placeholder':'Enter a Value..'}), 
        'field2': forms.TextInput(attrs={'class':'textInputClass', 'placeholder':'Enter a Value..', 'readonly':'readonly', 'value':10}), 
        'desc': forms.Textarea(attrs={'class':'textAreaInputClass', 'placeholder':'Enter desc', 'rows':5}), 

       } 
     exclude = ('my_valid_field') 

oluşturulan HTML, my_date_field: alan için

<input type="text" id="id_my_date_field" name="my_date_field"> 

oluşturulan HTML, field1:

<input type="text" name="field1" class="textInputClass" placeholder="Enter a Value.." id="id_field1"> 
+0

senin tarafında sonuçları işlemek neyi gösterebilir. Ben, . Ayrıca burada yapılacak yer tutucu nedir. – dusual

cevap

11

Sadece herkes tam sınıf kodunu istiyor

’ten beri yayınlamadı m kodu, en iyi tahmin bu böyle kabaca görünüyor kod yayınlayarak Tahminimde doğruladı gibi açıkça bir form alanını örneği şudur:

class MyForm(forms.ModelForm): 
    my_date_field = forms.DateField() 

    class Meta: 
     model = MyModel 
     widgets = { 
      'my_date_field': forms.DateInput(format=('%d-%m-%Y'), 
              attrs={'class':'myDateClass', 
              'placeholder':'Select a date'}) 
     } 

Ben açıkça bir örneğini eğer bunun nedeni çalışmıyor söyleyebiliriz Bunun gibi form alanı, Django tamamen form alanı davranışını tanımlamak istediğinizi varsayar; bu nedenle, iç Meta sınıfının widgets özniteliğini kullanamazsınız.

bölümünün sonunda not yaklaşık overriding the default field types or widgets bildiren:

Sahası tanımlandığı bildirimli olduğu gibi, bu nedenle Meta yapılan özelleştirme bu aletler, etiket, help_texts veya error_messages olarak niteliklerini bırakılır göz ardı edilir; Bunlar sadece otomatik olarak oluşturulan alanlarına uygulanır.

+0

etiketini kullanmıyor olmalısınız Sorunun güncellenmesini kontrol edin. Ve gönderdiğiniz cevap alakasız! – ThinkingMonkey

+0

Cevabımı açıklığa kavuşturdum. – Martin

+1

Giriş için teşekkürler. Bu belgelerde açıkça belirtilmiş olanları hala göremiyorum. Bu yüzden benim karışıklığım. Haklısın. – ThinkingMonkey

1

Django belgelerine @Martin cevabına ve okuma dayalı nihai çözüm olmalıdır:

class MyForm(forms.ModelForm): 
    my_date_field = forms.DateField(
     widget=forms.DateInput(format=('%d-%m-%Y'), 
           attrs={'class':'myDateClass', 
           'placeholder':'Select a date'})) 

    class Meta: 
     model = MyModel 
     widgets = { 
     }