Revista Informática

Django desde Cero: Relaciones o Asociaciones en Base de Datos (Parte II)

Publicado el 06 noviembre 2013 por Codehero @codeheroblog

¡Alerta!

Todos los ejemplos usados en el tutorial de son una continuación de los ejemplos del capitulo anterior.


¿Como crear la plantilla para mostrar una asociación o relación de base de datos en Django?

Lo primero que tenemos que hacer es crear un formulario donde nuestros usuarios puedan generar los comentarios de cada articulo. Para realizar dicho formulario nos vamos a ayudar de las plantillas o templates de Django. Veamos como hacerlo:

Generemos el archivo agregar_comentario.html dentro de la carpeta de templates (la carpeta templates esta ubicada dentro de la app blog que creamos anteriormente) y agreguemos el siguiente código:

<form action="/articulos/agregar_comentario/{{ articulo.id }}/" method="post">{% csrf_token %} <ul> {{ form.as_ul }} </ul> <input type="submit" name="submit" value="Agregar"> </form>

1234567 <form action="/articulos/agregar_comentario/{{ articulo.id }}/"method="post">{%csrf_token%}<ul>{{formas_ul}}</ul> <input type="submit"name="submit"value="Agregar"></form>

Observemos los siguiente:

  • La plantilla va a contener un form sencillo en html.
  • La acción del formulario debe ir hacia el url que creamos anteriormente para que la vista pueda aplicar la lógica que generamos en la parte I
  • Vamos a desplegar el formulario ComentarioForm con la ayuda de form.as_ul.

Si no sabes como manejar los formularios dentro de Django te recomiendo que le eches un ojo a Formularios en Django.


¿Como mostramos y agregamos los comentarios a un articulo?

Sencillo, para mostrar los comentarios disponibles dentro de un articulo es necesario crear un bucle el cual muestre todos los comentarios disponibles dentro de la plantilla del articulo. Veamos como hacerlo:

Debemos agregar el siguiente código al archivo agregar_comentario.html:

<h2>Comentarios Disponibles</h2> {% for c in articulo.comentario_set.all %} <p>{{ c.nombre}}: {{c.cuerpo}}</p> {% endfor %}

1234 <h2>ComentariosDisponibles</h2>{%forcinarticulocomentario_setall%}  <p>{{cnombre}}:{{ccuerpo}}</p>{%endfor%}

Observemos que con {% for c in articulo.comentario_set.all %} estamos creando un bucle el cual va a recorrer todos los comentarios dentro del articulo. Con <p>{{ c.nombre}}: {{c.cuerpo}}</p> imprimimos el nombre y el cuerpo del comentario.

Para poder agregar los comentarios en un articulo es necesario crear un link que nos permita llegar desde la plantilla del articulo.html hasta la plantilla de agregar_comentario.html. Veamos como hacerlo:

Debemos agregar el siguiente código al archivo agregar_comentario.html:

<p><a href="/articulos/agregar_comentario/{{ articulo.id }}">Agregar Comentario</a></p>

1 <p><ahref="/articulos/agregar_comentario/{{ articulo.id }}">Agregar Comentario</a></p>

Observemos que en la dirección de la pagina que el navegador debe buscar le estamos pasando el id del articulo para que la vista sepa o reconozca de que articulo en particular estamos hablando. El id se lo pasamos con {{ articulo.id }}.

Si no sabes como manejar las vistas dentro de Django te recomiendo que le eches un ojo a Vistas en Django.


Probemos

Para probar encendamos el server y naveguemos hasta un articulo en particular dentro de nuestros site:

Podemos observar que no poseemos ningún comentario disponible y que aparece el link para agregar un comentario.

Si queremos agregar un comentario hacemos click en Agregar Comentario y nos debe salir lo siguiente:

Una vez que hayamos guardado el comentario o vamos a poder observar disponible en el articulo:

Por último, puedes encontrar el código de toda la serie en el repositorio git que esta al principio del tutorial.


Conclusión

En esta lección, aprendimos como crear el template o la plantilla necesaria para crear el comentario, agregaremos un botón el cual nos va a permitir desde el artículo agregar los comentarios y por último, veremos como desplegar todos los comentarios disponible dentro de un artículo. Si tienes alguna pregunta, yo estaré feliz de responderte en los comentarios, además espero que te unas y le eches un vistazo a todo el resto de este curso.

Nos vemos en la próxima serie de Django, ¡Django Avanzado!

¡Hasta entonces…!


Volver a la Portada de Logo Paperblog