2011-08-29 14 views
14

मेरे पास एक Django रूप है जो पृष्ठ का हिस्सा है।मैं django रूपों में कस्टम HTML विशेषताओं को कैसे सेट करूं?

search_input = forms.CharField(_(u'Search word'), required=False) 

मैं {{ form.search_input }} के माध्यम से ही टेम्प्लेट में उपयोग कर सकते हैं: कहते हैं कि मैं एक क्षेत्र है देता है। कस्टम HTML एटर्स (जैसे नाम और मूल्य) कैसे सेट करें? मैं लचीला समाधान ढूंढना चाहता हूं, जो मुझे सभी प्रकार के क्षेत्रों में किसी भी आवश्यक कस्टम विशेषताओं को जोड़ने की अनुमति देगा।

मैं https://docs.djangoproject.com/en/dev/ref/forms/widgets/#widget

पाया लेकिन attrs का उपयोग कर मुझे (यदि CharField साथ प्रयुक्त) देता है:

__init__() got an unexpected keyword argument 'attrs' 

उत्तर

17

आप प्रभाव आप देख रहे हैं प्राप्त करने के लिए CharField पर विजेट बदल सकते हैं।

search_input = forms.CharField(_(u'Search word'), required=False) 
search_input.widget = forms.TextInput(attrs={'size': 10, 'title': 'Search',}) 
8

आप भी इस कोशिश कर सकते हैं:

search_input = forms.CharField(
    _(u'Search word'), 
    required=False, 
    widget=forms.TextInput(attrs={'size': 10, 'title': 'Search',}) 
) 

यह खंड Styling widget instances हकदार में प्रलेखित है।

6

पुराना सवाल है, लेकिन जो कभी एक और विकल्प की तलाश में है के लिए, वहाँ भी इस है: https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/#overriding-the-default-fields

आप कुछ इस तरह कर सकते हैं:

from django.forms import ModelForm, Textarea 
from myapp.models import Author 

class AuthorForm(ModelForm): 
    class Meta: 
     model = Author 
     fields = ('name', 'title', 'birth_date') 
     widgets = { 
      'name': Textarea(attrs={'cols': 80, 'rows': 20}), 
     } 
2

वहाँ भी टेम्पलेट केवल समाधान का उपयोग कर रहा है एक फिल्टर मैं django-widget-tweaks की सिफारिश करता हूं:

{% load widget_tweaks %} 

{{ form.email|attr:'required:true' }} 
संबंधित मुद्दे