2012-03-24 19 views
14

Bussinessesという新しいdjangoアプリ(プロジェクトではない)を作成し、models.pyに次のクラスを追加します。私は直接Bussinessesを使用している場合、Djangoはデータベースに「bussinesses_bussinesses」テーブルにアクセスします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) 

、それは明らかに存在していません。

テーブル「bussinesses」は別のAPPでも使用されているため、名前を変更できません。 テーブル接頭辞を使用せずにDjanoモデルを使用する方法を知りたいので、RAWデータベースAPIを直接使用したくありません。

ありがとうございます。

答えて

35

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" 

ところで企業がスペルミスしています。あなたはテーブルの名前を指定しているので、モデルにテーブルと同じ名前を付ける必要はないので、テーブル名のスペルが間違っていて簡単に修正できない場合は、あなたのクラスはの企業の正しい綴りになります。私も複数形を取り除き、それをclass Businessとする。最後に、既存のデータベースでDjangoまたはRailsを使用して、のカスタムテーブル名をすべてテーブルに設定する必要がある場合は珍しくありません。

+1

よろしくお願いいたします。管理プロパティのmgibsonbrのヒントも良いですし、あなたのアプリケーションを開発するのに役立つかもしれません。 –

2

あなたはdb_tableプロパティを使用して、モデルのメタクラスでテーブル名を指定することができます。

また、すでに存在するデータベーステーブルを使用している場合は、managedプロパティも参照してください。モデルをアンマネージドに設定した後には、(アプリケーションをリセットした場合など)それには影響しませんが、DjangoのORMはそのまま使用できます。

関連する問題