2011-02-05 57 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)