2012-04-26 12 views
5
class permForm(forms.Form): 
    def __init__(self, data=None, **kwargs): 
     super(permForm, self).__init__(data, **kwargs) 

     for item in list(AdminMenu.objects.filter(parent_id=0)): 
      self.fields['menu_%d' % item.id] = forms.BooleanField(label=item.title) 
      for childitem in list(AdminMenu.objects.filter(parent_id=item.id)): 
       arr=[] 
       arr.append(str(item.id)) 
       arr.append(str(childitem.id)) 
       self.fields['menu_%s' % '_'.join(arr)] = forms.BooleanField(label=childitem.title) 

Esto devolveráCómo personalizar la forma Django etiqueta

categoría: casilla

guardar Categoría: casilla

lista de categorías: casilla

Alimentación: casilla

Agregar Fooditems: casilla de verificación

Lista Fooditem: casilla

Tablas: casilla

añadir tablas: casilla

lista Tablas: casilla

Usuarios: casilla

Ver usuarios: casilla
¿Cómo puedo mostrarlo como sigue

categoría: casilla categoría

complemento: casilla

lista de categorías: casilla

alimentos: casilla

Añadir Fooditems: casilla

Lista Fooditem: casilla

Tablas: casilla

añadir tablas: casilla

lista Tablas: casilla

Usuarios: casilla

Ver usuarios: casilla

Quiero hacer etiqueta del padre CATEGORÍA NEGRITA DE DISTINGUIRLA DEL NIÑO. ¿POSIBLE? NO QUIERO USAR codificado FORMAS

+0

uso de CSS, es mucho más simple y más fácil de cambiar. La etiqueta de su formulario nunca cambiará si no cambia el modelo de formulario django. – platinummonkey

+0

No hay necesidad de gritar. Como se sugirió @platinummonkey, siempre puedes usar CSS, excepto que tu única opción es representar cada campo individualmente en tu formulario y agregar las etiquetas adicionales que desees de esa manera. * No * puedes incluir HTML en una etiqueta en Django. –

+1

En realidad, puedes. Ver mi respuesta por ejemplo código. – Brandon

Respuesta

13

Aquí está un ejemplo de cómo añadir un poco de HTML para formar etiquetas:

from django.template.defaultfilters import mark_safe 


class MyForm(forms.Form): 
    my_field = forms.CharField(
     max_length=100, 
     label = mark_safe('<strong>My Bold Field Label</strong>') 
    ) 
+0

Muy bonito pero un poco sucio. – Natim

+0

Un enfoque más limpio probablemente sería poner el texto de la etiqueta en una plantilla y usar render_to_string, sin contaminar el código de Python con HTML. – Brandon

+0

Tal vez la solución sería usar disquetes para extender la representación de la forma de etiqueta para este campo. – Natim

Cuestiones relacionadas