Comentarios en tu Proyecto Django

Guía para implementar un sistema de comentarios en Django con Bootstrap: modelo, vista, formulario y buenas prácticas de seguridad y UX.

25 ago 2025 • 4 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

En este artículo se explica paso a paso cómo añadir un sistema de comentarios en un proyecto Django utilizando un acordeón de Bootstrap para mostrar y ocultar los comentarios y un formulario para crearlos. El objetivo es ofrecer una guía clara para desarrolladores que necesiten implementar comentarios en posts y al mismo tiempo optimizar la experiencia de usuario. Q2BSTUDIO es una empresa de desarrollo de software a medida especializada en aplicaciones a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi, y ofrecemos soluciones completas para integrar funcionalidades como comentarios en entornos web profesionales.

Plantilla para visualizar post y lista de comentarios con acordeón de Bootstrap ejemplo básico usando etiquetas de plantilla Django y Bootstrap

<p> <a class=btn btn-primary data-toggle=collapse href=#collapseExample role=button aria-expanded=false aria-controls=collapseExample> Comments : {{post.cmt_count}} </a> </p> <div class=collapse id=collapseExample> {% for comment in post.comment_set.all %} <div class=card card-body> {{comment.content}} </div> {% endfor %} </div> <form method=POST> {% csrf_token %} <div class=col-md-8> {{ c_form }} </div> <input type=submit class=btn btn-secondary value=Comment /> </form>

Modelo para enlazar usuario y post con el comentario. Este modelo incluye relaciones con el usuario y con la publicación y un campo para el contenido

class Comments(models.Model): user = models.ForeignKey(User,on_delete=models.CASCADE) post = models.ForeignKey(UserPost,on_delete=models.CASCADE) content = models.CharField(max_length=500) def __str__(self): return self.content

Registro en el panel de administración Django para gestionar comentarios desde la interfaz administrativa

from django.contrib import admin from .models import UserPost,Comments admin.site.register(Comments)

Comandos de migración para crear las tablas en la base de datos

python manage.py makemigrations python manage.py migrate

Si aparece un error operativo por migraciones previas se puede reiniciar el historial de migraciones eliminando la base de datos sqlite y los archivos de migración de la aplicación manteniendo solo init y luego ejecutar las migraciones de nuevo. Eliminar db.sqlite3 y la carpeta de migraciones salvo init, luego hacer makemigrations y migrate.

Relación inversa para contar comentarios en el modelo UserPost. Añada un método que devuelva la cuenta de comentarios asociados

class UserPost(models.Model): title = models.CharField(max_length=150,null=False) content = models.TextField() author = models.ForeignKey(User,on_delete=models.CASCADE) created_at = models.DateTimeField(auto_now_add=True) image = models.ImageField(upload_to=get_image_path ) class Meta: ordering = ('-created_at',) def cmt_count(self): return self.comments_set.all().count() def __str__(self): return self.title

Vista para renderizar un post y procesar el formulario de comentarios. La vista valida que el usuario esté autenticado antes de crear un comentario y redirige de vuelta al post al finalizar

from .forms import PostForm,CommentForm def post_view(request,pk): post = get_object_or_404(UserPost,id=pk) if request.method == POST: if not request.user.is_authenticated: messages.warning(request, Please log in to send a message.) login_url = redirect(new_login).url + ?next= + request.path return redirect(login_url) c_form = CommentForm(request.POST) if c_form.is_valid(): instance = c_form.save(commit=False) instance.user = request.user instance.post = post instance.save() return redirect(post_view,pk=post.id) else: c_form = CommentForm() context = { post:post, c_form:c_form } return render(request,post_view.html,context)

Formulario para comentarios usando ModelForm. El campo content se presenta con un placeholder y clases CSS para integración con el diseño

from .models import Comments class CommentForm(forms.ModelForm): content = forms.CharField(label=, widget=forms.TextInput(attrs={placeholder: Write Your Thoughts on This Blog, class: mt-2 focus:ring-1 focus:ring-blue-500})) class Meta: model = Comments fields = [content]

Renderice el formulario en la plantilla donde se muestra el post para permitir a usuarios autenticados añadir comentarios

<form method=POST> {% csrf_token %} <div class=col-md-8> {{ c_form }} </div> <input type=submit class=btn btn-secondary value=Comment /> </form>

Buenas prácticas y consideraciones adicionales. Valide el contenido del comentario para evitar inyección de HTML malicioso, implemente paginación para listas largas de comentarios y utilice peticiones asíncronas AJAX para mejorar la experiencia usuario si desea evitar recarga completa de la página. En proyectos empresariales considere integrar sistemas de moderación automática basados en inteligencia artificial para detección de spam y lenguaje inapropiado.

Cómo puede ayudar Q2BSTUDIO. En Q2BSTUDIO diseñamos e implementamos funcionalidades completas como sistemas de comentarios integrados con identidad de usuario, cifrado y políticas de seguridad adecuadas. Ofrecemos servicios de software a medida y aplicaciones a medida que incluyen integración con servicios cloud aws y azure, soluciones de inteligencia artificial para empresas, agentes IA, servicios de inteligencia de negocio y visualización con power bi. Además proporcionamos consultoría en ciberseguridad para proteger datos de usuarios y asegurar la plataforma.

Palabras clave y posicionamiento. Este artículo incorpora términos relevantes para mejorar el posicionamiento en búsquedas relacionadas con aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.

Resumen y cierre. Con los pasos anteriores puede implementar un sistema de comentarios funcional en Django usando la relación inversa para contar comentarios, un formulario para crearlos y un componente de Bootstrap para mostrarlos de forma elegante. Si necesita una solución a medida, optimizada y segura, contacte con Q2BSTUDIO para diseñar e integrar la solución completa acorde a sus requisitos.

A BREAK?

Play for a moment before you go

OUR SERVICES

How we can help you

Artificial intelligence

AI agents, chatbots, and intelligent assistants that automate tasks and serve your customers 24/7 to improve the efficiency of your business.

More info

Software Development

Web, mobile, and desktop applications, intranets, e-commerce, SaaS, and management platforms designed for your company's specific needs.

More info

Cloud services

Migration, infrastructure, managed hosting, high availability, and security on Microsoft Azure and Amazon Web Services to help your business scale without limits.

More info

Cybersecurity and pentesting

Security audits, penetration testing and protection of applications, data and infrastructure on-premise and cloud, with ethical hacking and regulatory compliance.

More info

Business Intelligence

Dashboards and data analysis with Power BI: we integrate your sources, design dashboards and KPIs and turn your data into decisions.

More info

Process automation

We automate repetitive tasks and connect your applications with n8n, Power Automate, Make, and RPA, eliminating manual work and increasing productivity.

More info

Training for Companies

We train your teams in technology with criteria: web development, databases, Git, best practices and security, automation with n8n, artificial intelligence for companies and creation of AI solutions with Azure AI Foundry.

More info

Code Auditing

We audit the code that you, your team or an AI create: we tell you what is good and what to improve, we secure it and make it ready for production, web or app.

More info

AI Image Generation

We create for you the images that your business needs with artificial intelligence: product, networks, advertising, illustration and avatars. You tell us what you want and we deliver it ready to use.

More info

AI Video Generation

We create videos with artificial intelligence for you: promotional, networking, virtual presenters, dubbing and animations. You tell us the idea and we will deliver it assembled and ready to publish.

More info

AI Conversational Avatars

We create conversational avatars with AI – digital humans with a face and voice – that serve your customers and teams with the knowledge of your company, on your website, interactive monitors, WhatsApp or Teams.

More info

Online Marketing and AI

Google Ads, Meta Ads, LinkedIn Ads and AI Engine Positioning (GEO/AEO): we attract customers and make your brand appear where they search for you, also on ChatGPT, Gemini and Perplexity.

More info

Do you have a project in mind?

Tell us your vision and we'll turn it into a software solution. Whatever the scope, we make your idea real.

Live Chat