Buenas prácticas para definir modelos con Django

Guía práctica para definir modelos Django en software a medida: nomenclatura explícita, gestión de borrado y estados, defaults y portabilidad entre motores para escalar con calidad.

8 sept 2025 • 6 min read • Q2BSTUDIO Team

Inteligencia-Artificial-

Buenas prácticas para definir modelos con Django, reescrito en español y con recomendaciones prácticas aplicables en proyectos reales de software a medida. En Q2BSTUDIO, empresa de desarrollo de software, aplicaciones a medida, especialistas en inteligencia artificial, ciberseguridad y servicios cloud, hemos consolidado estas pautas para que tu base de datos y tus modelos se mantengan limpios, coherentes y listos para escalar.

Diez no hagas

1 No te apoyes en características del ORM para crear varios modelos con el mismo nombre confiando en que el nombre de tabla y de relaciones lo solucionen. 2 No te precipites a introducir un campo is_deleted con on_delete=PROTECT en todos los modelos ni a sobreescribir métodos del manager como all o filter de forma global. 3 No permitas dualidad en los filtros ni múltiples caminos para obtener el mismo resultado. 4 No ignores la conveniencia de usar la base de datos directamente cuando simplifica y aporta claridad técnica. 5 No sigas a ciegas las best practices de un ORM concreto, sigue las buenas prácticas comunes. 6 No construyas algoritmos acoplados a registros de base de datos. 7 No hagas cambios en la base de datos que no estén reflejados en el código. 8 No temas desnormalizar si te ayuda a mantener la lógica de dominio clara y evitar llegar a CQRS sin necesidad. 9 No edites migraciones salvo en casos excepcionales y muy justificados. 10 No uses características específicas del motor si prevés cambiar de proveedor, despliegues en distintos entornos o pruebas con SQLite en memoria.

Nomenclatura de modelos y tablas

Django permite duplicar nombres de clase en distintas apps creando tablas con prefijo de app, por ejemplo users.Group a users_group y posts.Group a posts_group. Aunque en base de datos funcione, en el código genera confusión y complica mover modelos entre apps. Recomendaciones prácticas: 1 Si puede hacer falta, añade el prefijo lógico de la app en el nombre del modelo, por ejemplo UserGroup y PostGroup. 2 Especifica de forma explícita el nombre de la tabla en Meta en snake case con db_table. 3 Describe los campos ManyToMany en la tabla secundaria y valora una solución bidireccional cuando aplique. 4 Nombra las claves foráneas y M2M de forma semántica, por ejemplo author en lugar de user, reservando nombres técnicos para tablas M2M explícitas. 5 Para relaciones M2M usa el patrón model_name__field_name porque una misma pareja de tablas puede tener varias finalidades. 6 Si utilizas through para la tabla M2M, define en Meta el nombre siguiendo el mismo patrón. 7 Declara siempre default_related_name en Meta en snake case y plural. 8 Cuando no puedas usar el default related name por múltiples FKs o M2M, define related_name con el patrón field_name_model_name_plural. 9 Completa Meta con db_table_comment, verbose_name y verbose_name_plural además de default_related_name. Recuerda que una tabla M2M solo necesita db_table. Un ejemplo clásico es Comment, que aunque conecta User y Post, se modela como entidad lógica independiente por su funcionalidad propia.

Gestión del borrado

Evita el patrón genérico de is_deleted con on_delete=PROTECT. A veces la basura es basura y conviene borrarla. En pruebas necesitarás crear y limpiar datos rápidamente. El campo is_deleted no aporta semántica y on_delete=CASCADE puede eliminar históricos valiosos. Mejor modela la intención: por ejemplo, una Task con subtask con on_delete=SET_NULL y un booleano is_active con default y db_default en false. Consulta lo activo con filtros explícitos sobre is_active.

Campos con default

Si un campo tiene default, define también db_default para alinear el comportamiento de aplicación y base de datos.

Campos booleanos

Pon siempre default y nunca null true. Añade también db_default. Ejemplo conceptual: is_active con default false y db_default false.

Campos de fecha y hora

default=timezone.now cuando quieras pre rellenar al renderizar formularios. auto_now_add true cuando quieras establecer la fecha al crear y no sea editable. auto_now true cuando deba actualizarse en cada edición y no deba ser gestionado manualmente.

CharField y TextField

La documentación de Django sugiere evitar null en campos de texto y preferir cadena vacía. En la práctica, para TextField rara vez es necesario cambiarlo. Para CharField es habitual que sea requerido, que almacene valores fijos mediante TextChoices o que contenga notas sin necesidades de filtrado. Recomendación pragmática: 1 Evita default vacío en CharField y probablemente en TextField, usa null true cuando no sea obligatorio. 2 Si desconoces el límite, max_length 255 es razonable.

Choices y estados

No acoples reglas a registros de base de datos ni sacrifiques claridad por supuestos ahorros. Usa TextChoices en la mayoría de los casos, nombra la clase en plural y pon los valores en mayúsculas para indicar que son constantes de dominio. Define la clase de choices dentro del modelo salvo que se reutilice en otros. Este enfoque es preferible a IntegerChoices en muchas situaciones y muy superior a crear una tabla Status con una clave foránea para estados. Lo mismo aplica a derechos y permisos.

Trabajo directo con la base de datos

Usa consultas claras y expresivas. Evita duplicar rutas de filtrado que generen divergencias. No dejes operaciones manuales fuera del control del código ni dependas de rasgos exclusivos del motor si planeas mover entre proveedores o utilizar servicios cloud como AWS o Azure.

Por qué importa para tu negocio

Unos modelos bien definidos reducen deuda técnica, aceleran la entrega de aplicaciones a medida, simplifican la analítica con servicios inteligencia de negocio y facilitan la integración de inteligencia artificial e incluso agentes IA. En Q2BSTUDIO combinamos arquitectura robusta con prácticas modernas para que tu software a medida escale con seguridad, gobernanza de datos y observabilidad.

Si buscas un partner con experiencia real en diseño de dominio, orquestación en servicios cloud aws y azure, despliegues seguros y pipelines de datos listos para power bi, hablamos el mismo idioma. Descubre cómo abordamos proyectos de software a medida y aplicaciones a medida desde la concepción hasta la operación, y cómo aplicamos ia para empresas en casos de uso reales, desde clasificación y recomendación hasta automatización de procesos con calidad de datos y trazabilidad.

¿Quieres potenciar tu roadmap de inteligencia artificial con datos bien modelados y pipelines gobernados? Conoce nuestra propuesta en inteligencia artificial y cómo combinamos MLOps, ciberseguridad y arquitectura en la nube para acelerar resultados.

Resumen accionable

1 Nombra y versiona de forma explícita, evita ambigüedades y dependencias del ORM. 2 Modela la semántica del borrado y del estado con campos claros y defaults sincronizados con la base de datos. 3 Prefiere TextChoices y constantes en mayúsculas para estados y permisos. 4 Usa null true en CharField cuando no sea obligatorio y olvida el default vacío. 5 Evita ediciones manuales de migraciones y rasgos de motor que limiten portabilidad. 6 No tengas miedo de desnormalizar cuando mantenga tu lógica de dominio clara. Con estas prácticas, tus modelos de Django quedarán listos para escalar con calidad, seguridad y velocidad, habilitando mejores productos digitales y analítica de valor.

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