2009-05-11 7 views
1

私のモデルはこれに似ています。これは大丈夫ですか、私は共通の基底クラス抽象化する必要がありますか?これとの間にdiffercenesは何ですか、抽象化して余分なテーブルを持たないのですか?私は物事を取り除いたので、主キーが1つしかないのは奇妙に思えます。私のdjangoモデルをリファクタリングするのは安全ですか?

class Input(models.Model): 
     details = models.CharField(max_length=1000) 
     user = models.ForeignKey(User) 
     pub_date = models.DateTimeField('date published') 
     rating = models.IntegerField() 

     def __unicode__(self): 
      return self.details 

    class Case(Input): 
     title = models.CharField(max_length=200) 
     views = models.IntegerField() 

    class Argument(Input): 
     case = models.ForeignKey(Case) 
     side = models.BooleanField() 

intpuの入力を除外するにはこのokですか?私は、事例と議論が主キーを共有していることに気づいた。このような

CREATE TABLE "cases_input" (
     "id" integer NOT NULL PRIMARY KEY, 
     "details" varchar(1000) NOT NULL, 
     "user_id" integer NOT NULL REFERENCES "auth_user" ("id"), 
     "pub_date" datetime NOT NULL, 
     "rating" integer NOT NULL 
    ) 
    ; 
    CREATE TABLE "cases_case" (
     "input_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "cases_input" ("id"), 
     "title" varchar(200) NOT NULL, 
     "views" integer NOT NULL 
    ) 
    ; 
    CREATE TABLE "cases_argument" (
     "input_ptr_id" integer NOT NULL PRIMARY KEY REFERENCES "cases_input" ("id"), 
     "case_id" integer NOT NULL REFERENCES "cases_case" ("input_ptr_id"), 
     "side" bool NOT NULL 
    ) 

答えて

1

から:あなたは他のモデルの数にいくつかの一般的な情報を入れたいときdjango web site

抽象基本クラスが便利です。基本クラスを作成し、meta =クラスにabstract = Trueを設定します。このモデルは、データベーステーブルの作成には使用されません。代わりに、他のモデルの基本クラスとして使用されるとき、そのフィールドは子クラスのフィールドに追加されます。

関連する問題