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.