2015-09-25 67 views
-1

我有一個模型用戶和模型團隊。 我經常使用Team的所有字段和User的一個字段(用戶名),但並非總是如此!django模型與關係的最佳模式

一個團隊包含許多用戶,對於這些關係,我創建這個模型(1):

class joinTeam(models.Model): 
    username_user=models.CharField(max_length=30) 
    team = models.ForeignKey(Projet, null=False) 

但我猶豫該(2),以取代本場 'username_user':

class joinTeam(models.Model): 
    username_user=models.ForeignKey(User, null=False) 
    team = models.ForeignKey(Projet, null=False) 

I'm afraid that this model (2) consumes more capacity the the first (1). 

如何使用簡單的CharField或ForeignKey?

回答

0

恐怕這種模式(2)消耗更多的能力第一 (1)。

不要害怕,django只會向用戶存儲引用(指針/ id),而不是整個模型實例。

你的模型應該是這樣的:

class joinTeam(models.Model): 
    user=models.ForeignKey(User, null=False) 
    team = models.ForeignKey(Projet, null=False) 

重命名username_useruser

此外,是不錯的做法,試圖不重複的數據,如果你存儲usernamejoinTeam table,你是複製數據,因爲,你可以從user table獲得它。

+0

是的,謝謝 – Zoulou

0

傾向於使用示例二,與ForeingKeys。

最佳實踐,將user_name_user重命名爲用戶
,默認情況下,空=假,但如果你想要,可以明確的是

class joinTeam(models.Model): 
    user = models.ForeignKey(User) 
    team = models.ForeignKey(Projet) 

當進行查詢,只需使用select_related,你只需要在數據庫中擊中一下。

joinTeam.objects.all().select_related('user')