为没有多对多关系的朋友创建架构?

时间:2011-02-05 03:15:11

标签: python sql mysql django django-models

我正在研究我的第一个Django应用程序,并试图为它创建模型,但我仍然坚持如何创建我认为应该是一个简单的模型关系。我想为用户创建一个模型,具有典型的属性,如用户名,密码(当然是哈希),加入日期等。然后希望能够将此用户链接到网站上的所有朋友/关注者。但我陷入困境的是我如何设置这种关系,因为一个用户可以有很多朋友,我可以关闭User表的主键,但是我如何为拥有主键的friends表创建一个模型user table提供两个函数,一个是作为用户的映射,还是映射到所有朋友的主键?

 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)

2 个答案:

答案 0 :(得分: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()之类的用户访问朋友。有点冗长,但保持干净。

答案 1 :(得分:0)

CREATE TABLE friends (user_id int, friend_id int)

两列都引用用户ID。我不知道Django模型,但是从你的代码猜测它看起来像:

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