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 de lectura • Equip Q2BSTUDIO

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.

UNA PAUSA?

Juga una estona abans de marxar

ELS NOSTRES SERVEIS

Com et podem ajudar

Intel·ligència artificial

Agents d'IA, chatbots i assistents intel·ligents que automatitzen tasques i atenen els teus clients 24/7 per millorar l'eficiència del teu negoci.

Més info

Desenvolupament de programari

Aplicacions web, mòbils i d'escriptori, intranets, e-commerce, SaaS i plataformes de gestió dissenyades per a les necessitats concretes de la teva empresa.

Més info

Serveis cloud

Migració, infraestructura, hosting gestionat, alta disponibilitat i seguretat en Microsoft Azure i Amazon Web Services perquè el teu negoci escali sense límits.

Més info

Ciberseguretat i pentesting

Auditories de seguretat, test d'intrusió (pentesting) i protecció d'aplicacions, dades i infraestructura on-premise i cloud, amb hacking ètic i compliment normatiu.

Més info

Business Intelligence

Quadres de comandament i anàlisi de dades amb Power BI: integrem les teves fonts, dissenyem dashboards i KPIs i convertim les teves dades en decisions.

Més info

Automatització de processos

Automatitzem tasques repetitives i connectem les teves aplicacions amb n8n, Power Automate, Make i RPA, eliminant treball manual i augmentant la productivitat.

Més info

Formació per a empreses

Formem els teus equips en tecnologia amb criteri: desenvolupament web, bases de dades, Git, bones pràctiques i seguretat, automatització amb n8n, intel·ligència artificial per a empreses i creació de solucions d'IA amb Azure AI Foundry.

Més info

Auditoria de codi

Auditem el codi que creguis tu, el teu equip o una IA: et diem què està bé i què millorar, el securitzem i el deixem llest per a producció, web o app.

Més info

Generació d'imatges amb IA

Creem per tu les imatges que necessita el teu negoci amb intel·ligència artificial: producte, xarxes, publicitat, il·lustració i avatars. Tu ens dius què vols i t'ho lliurem llest per fer servir.

Més info

Generació de vídeos amb IA

Creem per tu vídeos amb intel·ligència artificial: promocionals, per a xarxes, presentadors virtuals, doblatge i animacions. Ens comptes la idea i t'ho lliurem muntat i llest per publicar.

Més info

Avatars conversacionals amb IA

Creem avatars conversacionals amb IA —humans digitals amb cara i veu— que atenen els teus clients i equips amb el coneixement de la teva empresa, a la teva web, monitors interactius, WhatsApp o Teams.

Més info

Màrqueting Online i IA

Google Ads, Meta Ads, LinkedIn Ads i posicionament en motors d'IA (GEO/AEO): captem clients i fem que la teva marca aparegui on et busquen, també a ChatGPT, Gemini i Perplexity.

Més info

Tens un projecte en ment?

Explica'ns la teva visió i la convertim en una solució de programari. Sigui quin sigui l'abast, fem realitat la teva idea.

Live Chat