2012-03-24 20 views
14

Creo una nueva aplicación django (no proyecto) llamada Bussinesses, luego agrego la siguiente clase a models.py.¿Cómo eliminar el prefijo de una tabla para un modelo de Django?

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) 

si uso bussinesses directamente, el Django acceder a la tabla "bussinesses_bussinesses" en la base de datos, es evidente que no existe.

porque la tabla "bussinesses" también es utilizado por otra aplicación, por lo que no pueden cambiar su nombre. Quiero saber cómo usar el modelo Djano sin usar el prefijo de tabla, y no quiero usar la API de base de datos sin procesar directamente.

Muchas gracias.

Respuesta

35

sólo tiene que utilizar el model meta options.

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 empresas está mal escrito. Como está especificando el nombre de la tabla, no tiene que dar 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 la tabla. su clase a la ortografía correcta de negocios. También me deshace de la pluralización y la hago class Business. Por último no es raro que cuando se utiliza Django o rieles en una base de datos existente a tener que establecer un nombre de tabla personalizada para cada mesa.

+1

De nada. La sugerencia de mgibsonbr en la propiedad administrada también es buena y podría ser útil para desarrollar su aplicación. –

2

Se puede especificar el nombre de la tabla en la clase Meta del modelo utilizando la propiedad db_table.

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 propiedad managed. Después de configurar un modelo para syncdb no administrado no lo afectará (si restablece su aplicación, por ejemplo), pero aún puede usar el ORM de Django normalmente.

Cuestiones relacionadas