Martín, parte de este equipo, nos ha hecho el favor de escribir esta sección porque controla muy bien el tema.
Deberá seguir los pasos a continuación para representar su nueva plantilla de widget:
1) Agregar ‘django.formas’ para usted APLICACIONES_INSTALADAS;
2) Agregar FORM_RENDERER = ‘django.forms.renderers.TemplatesSetting’ para usted configuración.py.
Más detalles: https://docs.djangoproject.com/en/2.0/ref/forms/renderers/#django.forms.renderers.TemplatesSetting
Django versión < 1.11:
El widget debe implementar el render
para renderizar una plantilla diferente:
from django.utils.safestring import mark_safe
from django.template.loader import render_to_string
class MultiChoiceFilterWidget(forms.widgets.CheckboxSelectMultiple):
template_name = 'project/widgets/filter.html'
def render(self, data):
...
Do stuff with data
...
return mark_safe(render_to_string(self.template_name))
Django versión 1.11:
En la documentación del renderer, podemos encontrar lo siguiente:
Nuevo en Django 1.11:
En versiones anteriores, los widgets se representan con Python. Todas las API descritas en este documento son nuevas.
Y echando un vistazo al código fuente del widget y específicamente a cómo Input
widget extiende el Widget
clase, podemos ver que solo necesitaría personalizar su widget de la siguiente manera:
class MultiChoiceFilterWidget(forms.widgets.CheckboxSelectMultiple):
template_name = 'project/widgets/filter.html'
Que es lo que ya tienes.
Valoraciones y comentarios
Nos puedes confirmar nuestra misión exponiendo un comentario o dejando una puntuación te damos las gracias.