2011-07-15 13 views
1

私はクライアントと連絡先を持っていて、各クライアントは任意の数の連絡先を持つことができ、各連絡先は任意の数の種類を持つことができます。例えば、クライアント1は、2つの請求先、人物Aと人物B、および2つのビジネスの連絡先、人物Bと人物を持つことができますC.
私は次のモデルでこれをモデル化することが可能である知っている:余分な情報との関係にDjangoモデルを正しく使用する方法がわからない

class Client(models.Model): 
    id #primary key 
    #other data 

class Contact(models.Model): 
    id #primary key 
    #other data 

class Relationship(models.Model): 
    client_id=ForeignKey(Client) 
    contact_id=ForeignKey(Contact) 
    type=CharField(max_length=255)#or some other field that represents the type 

しかし、これは私には間違っているようです。リレーションシップモデルはオブジェクトではなく、他のオブジェクト間の関係を表すからです。私はこのようにする必要がありますか、モデルを作成する方法はありますか?

答えて

2

リレーションシップモデルはオブジェクトではなくリレーション他のオブジェクト間。

関係はファーストクラスのものです。

単純なRDBMSモデルにおいて

、関係は共有鍵(一方でFK、他にPK)によって暗示された

ただし、多対多の関連付けテーブルを持っている場合、明示的な行を作成その関係を具現化する。

あなたは追加の属性で関連オブジェクトを充実させるだけです。

これは問題ありません。実際には一般的です。

それはこれの一般化です。またhttps://docs.djangoproject.com/en/1.3/topics/db/models/#many-to-many-relationships

、これを読んで:https://docs.djangoproject.com/en/1.3/topics/db/models/#extra-fields-on-many-to-many-relationships

+0

感謝を。私はそれを見て、私はそれが私が探していたものであることに気付かなかった。 – murgatroid99

関連する問題