Buscar este blog

viernes, 28 de junio de 2013

Modificar un campo en formularios al crearlos con modelForm

Problema: Hemos generado un formulario usando la propiedad modelForm de Django. Esto nos genera el formulario automáticamente, pero que ocurre cuando necesitamos cambiar algún elemento de un campo, esto es, help_text, mensajes de error, añadir una clase para usar con CSS.

Pues bien, la solución la tenemos en la función __init_ como sigue.

Añadir o borrar de una relación many to many Django

Ejemplo:

class Libro(models.Model):
     titulo = models.CharField(max_length=50)
     capitulo = models.ManyToManyField(Capitulo)

class Capitulo(models.Model):
     nombre = models.CharField(max_length=50)

Tanto para borrar como para insertar en many to many necesitamos obtener el objeto dónde lo vamos a insertar:

Poner comentarios en Django Template

{# comentamos una sola línea así #}
{% comment %}
commentamos varias lineas
de esta forma
{% endcomment %}

Si necesitas ayuda escribe a través del formulario de contacto en la parte derecha.
Nota: Antes de acceder al formulario aparecerá un anuncio, que en 5 segundos podrás cerrar.

Como saber el tipo de dato de una variable en Template Django

¿Qué pasa cuando tenemos una variable en el template y necesitamos saber de que tipo es para hacer una cosa u otra? Queremos saber si es de tipo  por ejemplo.

Necesitamos crear un filtro, como viene aquí. Aunque claro, ahora vamos a poner otros filtros como sigue:

Acceder a elemento concreto de un diccionario en template django

La solución para ello es crear un filtro. ¿Cómo? Tenemos que crear un nuevo directorio mytemplatetags y los archivos __init__.py y mis_filtros.py como sigue:
  • Proyecto Django
    • my_app
      • models.py
      • views.py
      • mytemplatetags
        • __init__.py
        • mis_filtros.py
El archivo __init_.py se deja vacío En mis_filtros.py añadimos lo siguiente:

from django import template

register = template.Library()

@register.filter(name='indice')

def indice(dic, item):
     try:
          return dic[item]
     except:
          return None

Enlaces: Custom django filter tutorial

Si necesitas ayuda escribe a través del formulario de contacto en la parte derecha.
Nota: Antes de acceder al formulario aparecerá un anuncio, que en 5 segundos podrás cerrar.

Acceder a clave externa desde Template Django

Situación: En nuestro archivo views.py hemos realizado una consulta para obtener todos los datos de una tabla que contiene una clave externa:
models.py


class MiTabla(models.Model):
     campo_mi_tabla_uno = models.CharField(max_length=3,null=True, blank=True)
     campo_mi_tabla_dos = models.ForeignKey(TablaAuxiliar) class TablaAuxiliar(models.Model):
     campo_tabla_auxiliar_uno = models.CharField(max_length=3,null=True, blank=True)

views.py


consulta = NombreTablaDB.objects.all()