Dino Geek, intenta ayudarte

¿Por qué Django crea una tabla para modelos abstractos?


Django no crea una tabla para modelos abstractos. Los modelos abstractos en Django son una característica que permite definir campos y comportamientos comunes que se heredarán en los modelos hijos. Se utilizan cuando se quiere utilizar mucha de la misma información o comportamientos en más de un modelo, pero ninguna de esta funcionalidad requiere que se cree una tabla de base de datos para el modelo abstracto.

Según la documentación oficial de Django, “Django hace una distinción entre aquellos modelos que están destinados a ser base para heredar de otros…” y “…no se crearán tablas de base de datos para estos modelos y estas se convierten en tablas solo si están siendo referenciadas por un modelo concreto.” En otras palabras, un modelo abstracto es simplemente una clase base que definen datos y comportamientos comunes a sus subclases.

Por ejemplo, podríamos tener varios tipos de contenido en nuestra aplicación, digamos Articulo y Publicacion, que comparten campos comunes como “creado_en” y “actualizado_en”. En lugar de definir estos campos en cada modelo individualmente, podemos definir un modelo abstracto, digamos Contenido:

```
class Contenido(models.Model): creado_en = models.DateTimeField(auto_now_add=True) actualizado_en = models.DateTimeField(auto_now=True)

class Meta: abstract = True ``` Y luego nuestros modelos Articulo y Publicacion pueden heredar de este modelo abstracto:

```
class Articulo(Contenido): titulo = models.CharField(max_length=100)

class Publicacion(Contenido): titulo = models.CharField(max_length=100)
```
En este caso, Django creará una tabla para Articulo y una tabla para Publicacion, pero no una tabla para Contenido debido a que este es un modelo abstracto.

A pesar de que definimos la clase Contenido con el atributo `abstract = True` en la clase Meta, Django no creará una tabla en la base de datos para este modelo. Esto es porque Django considera a los modelos abstractos simplemente como plantillas para crear modelos reales o concretos.

Por lo tanto, cualquier intento de crear un objeto Contenido dará lugar a un error, ya que Django no considera al modelo Contenido como algo que deba tener una representación en la base de datos correspondiente a una tabla.

Referencias:
1. Documentación oficial de Django sobre modelos: https://docs.djangoproject.com/en/3.2/topics/db/models/
2. Documentación oficial de Django sobre modelos abstract base classes: https://docs.djangoproject.com/en/3.2/topics/db/models/#abstract-base-classes
3. Tutorial de Django sobre la creación de una base de datos de una aplicación web: https://docs.djangoproject.com/en/3.2/intro/tutorial02/


Genera artículos simplemente para optimizar tu SEO
Genera artículos simplemente para optimizar tu SEO





DinoGeek ofrece artículos sencillos sobre tecnologías complejas

¿Desea ser citado en este artículo? Es muy sencillo, contáctenos en dino@eiki.fr.

CSS | NodeJS | DNS | DMARC | MAPI | NNTP | htaccess | PHP | HTTPS | Drupal | WEB3 | LLM | Wordpress | TLD | Nombre de dominio | IMAP | TCP | NFT | MariaDB | FTP | Zigbee | NMAP | SNMP | SEO | E-Mail | LXC | HTTP | MangoDB | SFTP | RAG | SSH | HTML | ChatGPT API | OSPF | JavaScript | Docker | OpenVZ | ChatGPT | VPS | ZIMBRA | SPF | UDP | Joomla | IPV6 | BGP | Django | Reactjs | DKIM | VMWare | RSYNC | Python | TFTP | Webdav | FAAS | Apache | IPV4 | LDAP | POP3 | SMTP

| Whispers of love (API) | Déclaration d'Amour |






Aviso legal / Condiciones generales de uso