2011-02-05 43 views
0

我正在研究我的第一個Django應用程序,並試圖爲它創建模型,但我堅持如何創建我認爲應該是簡單的模型關係。我想爲用戶創建一個模型,其中包含用戶名,密碼(當然是哈希),加入日期等典型屬性。然後希望能夠將該用戶鏈接到網站上的所有朋友/追隨者。但是,我卡住的是我如何設置關係,因爲一個用戶可以有很多朋友,我可以鍵入用戶表的主鍵,但是如何創建具有主鍵的用戶表有兩個功能,一個是映射到用戶,另一個是映射到他們所有朋友的主鍵?爲沒有多對多關係的朋友創建架構?

from django.db import models 

class User(models.Model): 
    username = models.CharField(max_length=50) 
    password = models.CharField(max_length=200) 
    dateJoined = models.DateField('date joined') 

class Friends(models.Model): 
    user = models.ForeignKey(User) 
+1

爲什麼「沒有多對多關係」?這正是這是一個多對多的關係。一個包含兩列的表,這兩列都是User.ID的外鍵。 – 2011-02-05 03:17:28

+1

有點相關...你應該仔細研究一下使用Django Auth模塊。它可以幫助您避免編寫大量自己的用戶管理內容。 http://docs.djangoproject.com/en/dev/topics/auth/ – 2011-02-05 03:21:55

回答

2

首先,我建議你不要創建自己的用戶模式,而不是使用已內置在Django的一個。它會照顧你正在尋找的所有領域。

其次,我還會創建一個「個人資料」模型,並將其存儲在我的朋友中。看看這裏是什麼配置文件是:http://docs.djangoproject.com/en/1.2/topics/auth/#storing-additional-information-about-users

第三,在你的剖面模型,我就確實增加一個字段的朋友,因爲它的如下所示:http://docs.djangoproject.com/en/1.2/ref/models/fields/#django.db.models.ManyToManyField.symmetrical

然後,您可以訪問朋友像user.get_profile().friends.all()用戶。有點冗長,但保持乾淨。

0
CREATE TABLE friends (user_id int, friend_id int) 

兩個柱子引用的用戶ID。我不知道Django模型,但是從你的代碼的猜測,它會看起來像:

class Friends(models.Model): 
    user = models.ForeignKey(User) 
    friend = models.ForeignKey(User)