2012-03-24 12 views
14

Bussinesses adlı yeni bir django uygulaması (proje değil) oluşturuyorum, daha sonra aşağıdaki sınıfı models.py'ye ekliyorum. i Bussinesses doğrudan Django veritabanında "bussinesses_bussinesses" tablosunu erişecek kullanırsanızDjango modeli için bir tablonun öneki nasıl kaldırılır?

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) 

, Açıkçası yok.

"bussinesses" tablosu aynı zamanda başka bir APP tarafından kullanıldığı için, yeniden adlandıramıyor. Masa önekini kullanmadan Djano modelini kullanmayı öğrenmek istiyorum ve ham veritabanı API'sini doğrudan kullanmak istemiyorum.

Çok teşekkürler.

cevap

35

Sadece model meta options'u kullanın.

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" 

BTW işletmeler yanlış yazılmış. Tablonun adını belirttiğinizden, modelinize tabloyla aynı adı vermeniz gerekmez, bu nedenle tablo adı yanlış yazılmışsa ve kolayca düzeltemezseniz, en azından sınıfınız işletmeler'un doğru yazımına. Çoğulculuktan da kurtulacağım ve class Business yapalım. Son olarak, her bir tablosunda için özel bir tablo adı ayarlamanız gerekecek mevcut bir veritabanında Django veya Rails kullanıldığında nadir değildir.

+1

Rica ederim. Yönetilen mülkteki mgibsonbr'un ipucu da iyi bir uygulamadır ve uygulamanızı geliştirmede yararlı olabilir. –

2

Sen db_table özelliğini kullanarak, modelin Meta sınıfta tablo adını belirtebilirsiniz.

Ayrıca, zaten var olan bir veritabanı tablosu kullanıyorsanız, managed özelliğine de göz atmak isteyebilirsiniz. Yönetilmeyen bir modele ayarlandıktan sonra syncdb onu etkilemez (örneğin, uygulamanızı sıfırlarsanız), ancak yine de Django'nun ORM'sini normal olarak kullanabilirsiniz.