Modelos#
Documentación del modelo de datos para Construbot.
Descripción general#
Los modelos de datos de Construbot están organizados en varias aplicaciones:
usuarios: Usuario, Empresa, Cliente, NivelAcceso
proyectos: Contrato, Contraparte, Sitio, Estimación, Concepto, Retenciones
núcleo: Modelos básicos y utilidades
Arquitectura multiinquilino#
Todos los modelos de negocio incluyen:
class BusinessModel(models.Model):
company = models.ForeignKey(Company, on_delete=models.CASCADE)
# ... other fields
Consulte Multi-inquilino para obtener más detalles.
Modelos clave#
Modelos de usuario (aplicación de usuarios)#
Cliente - Cuenta de nivel superior
Empresa - Entidad comercial (inquilino)
Usuario: modelo de usuario personalizado con autenticación de correo electrónico
NivelAcceso - Niveles de permiso (1-6)
Consulte users para obtener una referencia completa.
Modelos de Negocio (aplicación de proyectos)#
Contrato - Contrato/Proyecto (jerárquico usando django-treebeard)
Contraparte - Contraparte (Cliente, Subcontratista, Contratista a destajo)
Sitio - Sitio de construcción
Estimado - Pago de progreso/estimado
Concepto: artículo de línea en el catálogo de contratos
Retenciones - Retenciones/retenciones financieras
Ver proyectos para una referencia completa.
Relaciones modelo#
Customer
└── Company
├── User (M2M)
├── Contrato
│ ├── Contraparte (FK)
│ ├── Sitio (FK)
│ ├── Estimate (reverse FK)
│ └── Concept (reverse FK)
├── Contraparte
└── Sitio
Patrones comunes#
Consultas específicas de la empresa:
# Always filter by company
contracts = Contrato.objects.filter(company=request.user.active_company)
Operaciones de árbol:
# Hierarchical contracts
children = contract.get_children()
ancestors = contract.get_ancestors()
descendants = contract.get_descendants()
Único por empresa:
class Meta:
unique_together = ('company', 'folio')
Ver también#
Esquema de base de datos - Database design
Multi-inquilino - Multi-tenant architecture
API - API reference