2012-09-16 3 views
7

django-crispy-forms로 작업하는 동안 질문에 대한 답을 얻지 못했습니다. 저는 다소 복잡한 폼 레이아웃을 가지고 있습니다. 모든 것이 지금까지는 정교하지 못한 형태로 극도로 멋지게 작동합니다.Django crispy-forms, BaseGenericInlineFormSet & allow_delete

양식의 일부는 일반 인라인 formset을 사용합니다. 이는 잘 작동하지만, 내 문제는 내가 삭제 - 체크 박스에 액세스하는 방법을 알아낼 수있다 (= can_delete을 가진 때 진정한)

대응하는 코드는 보이는 뭔가 같은 :

class BaseReleaseReleationFormSet(BaseGenericInlineFormSet): 

    def __init__(self, *args, **kwargs): 

     self.instance = kwargs['instance'] 
     super(BaseReleaseReleationFormSet, self).__init__(*args, **kwargs) 

     self.helper = FormHelper() 
     self.helper.form_id = "id_relation_form" 
     self.helper.form_class = 'form-horizontal' 
     self.helper.form_method = 'post' 
     self.helper.form_action = '' 
     self.helper.form_tag = False 

     base_layout = Row(
       Column(
         Field('name', css_class='input-small'), 
         #Field('delete', css_class='input-small'), 
         css_class='span3' 
         ), 
       Column(
         Field('url', css_class='input-xlarge'), 
         css_class='span4' 
         ), 
       css_class='row relation-row', 
     ) 

     self.helper.add_layout(base_layout) 

이름과 URL 필드는 원하는대로 바삭한 양식으로 렌더링되지만 삭제 체크 박스는 양식의 끝에 나타납니다. 레이아웃에서 액세스 할 수 없습니다.

누군가이 문제를 해결하는 방법을 알고 있습니까? 어떤 팁? 미리 감사드립니다!

+2

레코드의 경우 : 항상 'self.helper.render_unmentioned_fields = True'를 수행 한 다음 모든 "숨김"필드도 렌더링 할 수 있습니다. 그런 다음 이름이 무엇인지 확인하고 레이아웃에 명시 적으로 포함시킬 수 있습니다. –

답변

8

어리석은 나를 알아 냈어 .. 삭제 필드는 "DELETE"로 참조됩니다. (대문자에주의하십시오 ...)

base_layout = Row(
      Column(
        Field('name', css_class='input-small'), 
        css_class='span3' 
        ), 
      Column(
        Field('url', css_class='input-xlarge'), 
        Field('DELETE', css_class='input-small'), 
        css_class='span4' 
        ), 
      css_class='row relation-row', 
    )