2012-05-31 12 views
6
Erişim form alanı öznitelikleri

Bazı özel formlar django ile yapıyorum ancak forms.py aracılığıyla belirli bir form alanının eklediği özniteliklere nasıl erişilemiyorum.Tempoldeki Django

def putErrorInTitle (cls): 
init = cls.__init__ 

def __init__ (self, *args, **kwargs): 
    init(self, *args, **kwargs) 
    if self.errors: 
     for field_error in self.errors: 
      self.fields[field_error].widget.attrs['title'] = self.errors[field_error][0] 
      self.fields[field_error].widget.attrs['class'] = "help_text error_field" 

cls.__init__ = __init__ 
return cls 

Ben alanına Attibutes ekli nasıl.

class="{{form.id_diagnosis.class}}", class="{{form.id_diagnosis.widget.class}}" 

Ve ne erişilebilir olduğunu, neyin değil hakkında net belgeleri bulmak için görünmüyor:

<dl class="clearfix two"> 
<dd> 
    <label for="id_diagnosis">Diagnostico:</label> 
    <select class="{{form.id_diagnosis.class}}" id="id_equipment_activity-{{ forloop.counter0 }}-id_diagnosis" name="equipment_activity-{{ forloop.counter0 }}-id_diagnosis"> 
    {% for x,y in form.fields.id_diagnosis.choices %} 
    <option value="{{ x }}" {% ifequal form.id_diagnosis.data|floatformat x|floatformat %}selected="selected"{% endifequal %}>{{ y }}</option> 
    {% endfor %} 
    <option value="1000" {% ifequal form.id_diagnosis.data|floatformat '1000'|floatformat %}selected="selected"{% endifequal %}>Otro</option> 
    </select> 
</dd> 
<dd class="vertical_center" id="optional_diagnosis"><label for="optional_diagnosis">Diagnostico opcional:</label>{{ form.optional_diagnosis }}</dd> 
</dl> 

Ben onun özelliklerini erişmeye çalışıyorum. Gerçekten ben django "dostu" bir eski moda belgeleri daha doğrusu olurdu bir

cevap

9

Sadece her alan için form hataları görüntülemek istediğiniz gibi görünüyor. Form temizlendikten veya görünümde doğrulandıktan sonra alanlar hata iletileri içermelidir. Bunu gibi şablonda bunları görüntüleyebilir Böylece:

<form action='.' method='post'> 
    ... 
    <div class='a-field'> 
     {{ form.field_1.errors|join:", " }} 
     {{ form.field_1.label_tag }} 
     {{ form.field_1 }} 
    </div> 
    ... 
</form> 

gerçekten form alanı, gibi bir şey deneyebilirsiniz sonra niteliklerini görüntülemek istediğiniz ancak edin: Diğer durumlarda

{{ form.field_1.field.widget.attrs.maxlength }} 
+0

Teşekkür o .errors rota gitmek düşündüren ama hala soruya cevap için. –

6

elinden alan niteliklerini ayarlamak ve almak için yararlı olabilir.

self.fields['some_field'].widget.attrs['readonly'] = True 

... ve bir şablonda erişen:

formun init işlevinde ayarlama

{{ form.some_field.field.widget.attrs.readonly }} 
+0

Çok yardımcı! –