2012-09-16 14 views
7

Me encontré con una pregunta mientras trabajaba con django-crispy-forms para la cual no puedo obtener una respuesta. Tengo un diseño de formulario bastante complejo, todo funciona extremadamente bien con formas grotescas hasta el momento.Django crispy-forms, BaseGenericInlineFormSet & allow_delete

Una parte del formulario utiliza un formset genérico en línea. Esto está funcionando tan bien, pero mi problema es que no puedo encontrar la manera de acceder a la casilla de borrado (al tener can_delete = True)

El código correspondiente se ve algo como:

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) 

El nombre y el campo url se muestran con formas crujientes según se desee, pero la casilla de verificación eliminar aparece al final del formulario. Y no puedo acceder a él en el diseño.

¿Alguien sabe cómo solucionar este problema? ¿Algun consejo? ¡Gracias por adelantado!

+2

Para el registro: siempre puede hacer 'self.helper.render_unmentioned_fields = True' y luego todos los campos" ocultos "también se representan. Luego puede verificar cuáles son sus nombres e incluirlos explícitamente en el diseño. –

Respuesta

8

Stupid me - lo resolvió .. El campo de eliminación se denomina "DELETE". (tenga en cuenta las letras mayúsculas ...)

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