Читать книгу Django 2 - Antonio Melé - Страница 49
Crear un sistema de comentarios
ОглавлениеAhora va a elaborar un sistema de comentarios para el blog, donde los usuarios puedan comentar los artículos. Para crear este sistema, es necesario realizar los siguientes pasos:
1. Crear un modelo para guardar los comentarios.
2. Crear un formulario para enviar comentarios y validar la entrada de datos.
3. Añadir una vista que procese el formulario y guarde el nuevo comentario en la base de datos.
4. Editar la plantilla de detalle de artículos para mostrar un listado de comentarios y el formulario para añadir nuevos.
Empezará por crear un modelo para almacenar los comentarios. Para ello va a editar el fichero models.py de la aplicación blog con el siguiente código:
Este es el modelo Comment. Contiene una ForeignKey para asociar un comentario con un único artículo. Esta relación muchos a uno es definida en el modelo Comment porque cada comentario estará constituido por un único artículo, y cada artículo puede tener muchos comentarios. El atributo related_name permite nombrar el atributo que compone esta relación, desde el lado del objeto referenciado. Después de definirlo, puede recuperar los artículos de una instancia de comentario usando comment.post, y recuperar todos los comentarios a un artículo con post.comments.all(). Si no usara el parámetro related_name, Django usará el nombre del modelo en minúsculas seguido de _set (es decir, comment_set) para nombrar el gestor de la relación inversa.
Para obtener más información de las relaciones muchos a uno puede visitar https://docs.djangoproject.com/en/2.0/topics/db/examples/many_to_one/.
Ha añadido el campo booleano active para poder desactivar comentarios inapropiados de manera manual. El campo created lo utilizará para ordenar los comentarios de manera cronológica por defecto.
El nuevo modelo Comment que acaba de crear no está sincronizado con la base de datos. Va a ejecutar el siguiente comando para generar una nueva migración que refleje la creación de un nuevo modelo:
A continuación debería ver por salida:
Django ha generado el fichero 0002_comment.py dentro del directorio migrations/ de la aplicación blog. Ahora es necesario crear un esquema y aplicar los cambios a la base de datos. Para ello ejecute:
La salida obtenida debería ser semejante a esta:
La migración que acaba de crear se ha aplicado, apareciendo la tabla blog_comment.
Ya puede añadir el nuevo modelo al panel de administración para poder gestionar comentarios a través de esta sencilla interfaz. Abra el fichero admin.py de la aplicación blog, importe el modelo Comment y añada la clase ModelAdmin:
Arranque el servidor con el comando python manage.py runserver y abra la URL http://127.0.0.1:8000/admin/ en el navegador. En este punto debería aparecer la sección BLOG como se muestra en la imagen:
El modelo está registrado en el panel de administración y puede gestionar instancias Comment a través de la interfaz.