2012-03-29 16 views
5

La introspección me dice que los campos django tienen un atributo "hidden_widget". Tal vez no sea el propósito dado de este atributo, pero su mera existencia me tienta a usarlo en una plantilla para representar condicionalmente un widget oculto. por ejemplo,¿Hay alguna manera de presentar dinámicamente una versión oculta de un campo django en una plantilla?

{% if some condition %} 
    {{ form.my_field }} 
{% else %} 
    {{ form.my_field.hidden_widget }} 
{% endif %} 

Pero esto no funciona. ¿Es posible usar el widget oculto de esta manera? ¿Qué me estoy perdiendo?

que se dan cuenta de que podía hacer esto mediante el establecimiento de forma dinámica el widget en el init de mi clase de formulario personalizado basado en alguna kwarg personalizado para el condicional, lo que me pase a ella, pero la solución anterior (dinámicamente haciendo que la oculta widget en la plantilla) sería mucho más simple, si está disponible.

Respuesta

8

Estaba cerca, pero usando la función incorrecta. La respuesta, para aquellos que estén interesados, es:

{{ form.my_field.as_hidden }} 
+0

Lo descubrimos mirando el código fuente de Django. No estoy seguro si he visto esto documentado en cualquier lugar. Si alguien publica una respuesta con un enlace a algún tipo de documentación para la función as_hidden, la marcaré como aceptada, ya que preferiría no aceptar mi propia respuesta. –

Cuestiones relacionadas