2012-09-16 10 views
7

Ich bin bei der Arbeit mit django-crispy-forms auf eine Frage gestoßen, für die ich keine Antwort bekomme. Ich habe ein ziemlich komplexes Formularlayout, mit Cripy-Forms funktioniert alles sehr gut.Django crispy-forms, BaseGenericInlineFormSet & allow_delete

Ein Teil des Formulars verwendet ein generisches Inline-Formset. Dies funktioniert auch, aber mein Problem ist, dass ich nicht herausfinden kann, wie die Lösch-Checkbox zu gelangen (wenn can_delete mit = True)

Der entsprechende Code sieht ungefähr so ​​aus:

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) 

Der Name und das URL-Feld werden wie gewünscht mit knusprigen Formen dargestellt, aber das Kontrollkästchen zum Löschen wird am Ende des Formulars angezeigt. Und ich kann nicht darauf im Layout zugreifen.

Kann jemand dieses Problem lösen? Irgendwelche Tipps? Danke im Voraus!

+2

Für das Protokoll: Sie können immer tun 'self.helper.render_unmentioned_fields = true' und dann alle„hidden“Feld wird auch gemacht. Dann können Sie überprüfen, was ihre Namen sind und sie explizit in das Layout aufnehmen. –

Antwort

8

Dumm ich - fand es heraus .. Das Löschen-Feld wird als "DELETE" verwiesen. (Beachten Sie die Großbuchstaben ...)

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', 
    ) 
Verwandte Themen