2013-04-13 107 views
1

我需要存儲一組對象之間的一些關係型數據之間的雙向關係(我們姑且稱之爲人的)。所以,一些這樣的模型:Django和模型

class Person(models.Model): 
    name = models.CharField(max_length=64) 

class Relationship(models.Model) 
    person1 = models.ForeignKey(Person, related_name='person1') 
    person2 = models.ForeignKey(Person, related_name='person2') 
    relationship_type = models.ChoiceField(choices=...) 
    information = models.TextField() 

......所以,每個人都可以鏈接到任何其他人。然而,一些關係都沒有定向,所以也無所謂誰是PERSON1或誰是PERSON2(這個例子讓我們說的人物是PersonB的「朋友」)。其他類型的關係是定向其中排序很重要(比如,PersonC是「PersonD的老闆」)。

什麼是在Django處理這個最好的方法是什麼?

+0

你試過manytomanyfields? – iMom0

+0

人有多少行?你的數據庫後端是什麼?你將對定向模型和非定向模型進行什麼樣的查詢?你會混合結果而不是定向模型嗎? – danihp

回答

1

可能的解決辦法是將有兩個型號供用戶之間的關係。 一個是定向和一個用於雙向 想想邏輯程序。幾乎每次從數據庫中獲取用戶時,都需要知道它是什麼樣的關係。有了兩個關係模型,你不會有這樣的問題。只有權衡這種方式,你必須提出兩個查詢來顯示人與人之間的所有關係 - 但在大多數情況下,這不是常常的任務。