Saltar al contenido

¿Cómo eliminar el prefijo de una tabla para un modelo Django?

Solución:

Simplemente use las opciones de meta del modelo.

class Bussinesses(models.Model):
    business_email = models.EmailField()
    password = models.CharField(max_length=20)
    contact_first_name = models.CharField(max_length=30)
    contact_last_name = models.CharField(max_length=30)

    class Meta:
        db_table = "bussinesses"

por cierto negocios está mal escrito. Como está especificando el nombre de la tabla, no tiene que darle a su modelo el mismo nombre que la tabla, por lo que si el nombre de la tabla está mal escrito y no puede arreglarlo fácilmente, al menos puede cambiar el nombre de su clase a la ortografía adecuada de negocios. También me desharía de la pluralización y la haría class Business. Finalmente, no es raro que cuando se usa Django o Rails en una base de datos existente se necesite establecer un nombre de tabla personalizado para cada mesa.

Como acotación al margen, si quieres cambiar (o eliminar) el prefijo para todos tablas puede proporcionar su propia metaclase. Esto es útil si tiene varios casos como Businesses donde le gustaría que la clase y el nombre de la tabla fueran iguales.

Por ejemplo, el siguiente código antepone todas las tablas con FOO_ en lugar de appname_:

class MyModelBase( ModelBase ):
    def __new__( cls, name, bases, attrs, **kwargs ):
        if name != "MyModel":
            class MetaB:
                db_table = "FOO_" + name

            attrs["Meta"] = MetaB

        r = super().__new__( cls, name, bases, attrs, **kwargs )
        return r       

class MyModel( Model, metaclass = MyModelBase ):
    class Meta:
        abstract = True

class Businesses( MyModel ):
    ...

Puede especificar el nombre de la tabla en la clase Meta del modelo, utilizando el db_table propiedad.

Además, si está utilizando una tabla de base de datos que ya existe, es posible que también desee echar un vistazo a la managed propiedad. Después de configurar un modelo como no administrado syncdb no lo afectará (si restablece su aplicación, por ejemplo), pero aún puede usar el ORM de Django normalmente.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *