2013-04-15 62 views
0

假設我有一個名爲的客戶端,其中包含名字,姓氏,電子郵件等基本信息。如果我希望用戶能夠添加另一個自定義字段(僅適用於他),請說淨值(一個文本字段)。該用戶現在可以將淨值信息添加到他的所有客戶。另一位用戶可能想要將通話記錄添加到他的所有客戶。Building Custom Extentable Models

我該如何去設計一個可以處理來自不同用戶的定製添加的模型?還有,我正在嘗試做什麼的具體名稱?

更新:

有多個帳戶,並且每個帳戶都有一組客戶。我正在考慮使用ClientCharIndex模型跟蹤所有擴展字段和ClientCharAttribues模型以存儲所有值。

class Client(Model): 
    account = models.ForeignKey(Account) 
    first_name = Model.CharField() 
    last_name = Model.CharField() 
    ... 

class ClientCharIndex(Model): 
    account = models.ForeignKey(Account) 
    name = Model.CharField() 

class ClientCharAttribues(Model): 
    key = models.ForeignKey(ClientCharIndex) 
    client = models.ForeignKey(Client) 
    value = Model.CharField() 

回答

1

你可以做的就是定義只鍵值領域模型(可能是類型),並有M2M或外鍵關係與client模型。

事情是這樣的:

class Client(Model): 
    ... 

class UserAttribues(Model): 
    key = Model.CharField() 
    value = Model.CharField() 
    client = Model.ManyToManyField(Client) 

有了這個,你可以在任何鍵值信息添加到客戶端對象,其中任意數量。

+0

感謝您的評論,併爲最近的回覆感到抱歉!上面更新的模型是否有意義? – drakej44

+0

@ drakej44,不知道爲什麼你需要中間'ClientCharIndex'模型。但似乎沒關係。 – Rohan

+0

它將跟蹤添加到每個帳戶的字段,以便在客戶端尚未爲該字段存在任何數據時顯示爲空。那有意義嗎? – drakej44