2012-06-12 4 views
1

Django 및 Datepicker를 Twitter-Bootstrap과 함께 사용하고 있으며 form.fields가 동일한 위젯 (DateInput) 인 경우 동일한 클래스 및 동일한 ID를 갖기를 원합니다. 구체적으로, 나는 ID를 적절하게 변경하고 싶다. 매번 다른 ID를 가져야합니다.Django에서 Datepicker 사용

아래 정의 된 클래스 i입니다. ID를 매번 다른 ID로 변경하려면 어떻게해야합니까? ? 내가 그 일을 가야합니까

class MyDatePicker(forms.DateInput) 
    def __init__(self, *args, **kwargs): 
     attrs = kwargs.pop("attrs",{}) 
     attrs["class"] = "datepick" 
     attrs["id"] ="date_1" 
     kwargs["attrs"] = attrs 
     super(MyDatePicker, self).__init__(*args, **kwargs) 

어떻게에 도움이 필요 ... 어떤 제안을 환영

답변

1

당신은 위젯의 종류를 확인하기 위해 templatetag을 등록 할 수 있습니다 :

@register.filter('klass') 
def klass(obj): 
    return obj.__class__.__name__ 

{% load your_filter_module %} 
<form id="form" enctype="multipart/form-data" class="form-horizontal" method="POST" action="">{% csrf_token %} 
    <fieldset> 
     {{ form.non_field_errors }} 
     {% for field in form %} 
      <div class="control-group{% if field.errors %} error{% else %}{% if form_errors %} success{% endif %}{% endif %}"> 
       <label class="control-label" for="{{ field.auto_id }}">{% trans field.label %}</label> 
       <div class="controls"> 
        {% if field.field.widget|klass == "CheckboxInput" %} 
         <label class="checkbox"> 
          <input type="checkbox" id="{{ field.auto_id }}" name="{{ field.name }}"{% if field.value == "on" %} checked{% endif %}> 
          {% trans "Some random text" %} 
         </label> 
        {% endif %} 
        # ... etcetera continue check for other classes ... 

참고 : CL 그런 다음 템플릿

DRY 접근 방식은 HTML 위젯을 반환하는 필터에 루프 및 클래스 논리 (가로/세로 등)를 추가하는 것입니다.