2017-01-11 46 views
3

我在Django中有通知USER應用程序。 的代碼都類似:Django中的OneToMany或ManyToOne的任何替代

class Notification(models.Model): 
    user = models.ForeignKey(User , related_name = "notification" 
    .... 
    .... 

class User(models.Model): 
    notifications = models.OneToManyField(Notification , related_name = "user" 
    .... 
    .... 

現在我知道models.OneToManyField沒有在Django存在。 我得到的事實是,我可以簡單地從模型的通知實例訪問用戶。但我想這會以某種方式減慢我的系統,因爲在生產中我會保留Notification Model的所有實例。 例如:一旦系統投入生產大量時間,我預計每個用戶的通知量將超過500次。

我想,直接訪問一個用戶的所有通知,而不是篩選整個Notification Table來查找特定用戶的通知會更容易。
我讀過this和文檔的程度,我無法找到解決我的問題。

此外,我不確定處理器從整個通知表中獲取所有通知的處理限制。我只是假設它會稍微慢一些。

回答

4

OneToManyField在Django中不存在,因爲它只是ForeignKey的反向關係。因此,您不需要User型號的notifications字段,只需將其刪除即可。

不要擔心提前過濾通知的性能。查詢關係是SQL的設計目標,這就是關係數據庫擅長的。

+0

我相信我的數據庫引擎的過濾能力是目前最可靠的解決方案。萬分感謝! –