Django外键关系

Django外键关系,django,models,foreign-key-relationship,Django,Models,Foreign Key Relationship,我试图建立两个表之间的关系,Registered_Users和User_Connections,这样注册的用户就可以在他们的连接列表中添加其他人(更像是添加朋友)。以下是models.py中的内容: class Registered_Users(models.Model): first_name = models.CharField(max_length=30) last_name = models.CharField(max_length=30) email = mod

我试图建立两个表之间的关系,Registered_Users和User_Connections,这样注册的用户就可以在他们的连接列表中添加其他人(更像是添加朋友)。以下是models.py中的内容:

class Registered_Users(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField(unique=True)
    password = models.CharField(max_length=10)

    def __unicode__(self):
        return self.email

class User_Connections(models.Model):
    email = models.EmailField(blank=True)
    connection_email = models.EmailField(blank=True)
    user_connection = models.ForeignKey(Registered_Users, null=True)

    def __unicode__(self):
        return self.connection_email
我想做的是:

  • 获取注册用户:

    ru = Registered_Users.objects.get(id=1)
    
  • 从用户\u连接获取此注册用户的连接:

    uc = User_Connections.objects.filter(user_connection=ru)
    
  • 现在,我如何显示user_Connection的用户连接的电子邮件id以及注册用户的每个用户连接的名字

    让我知道是否有更好的方法来实现这一点

    注意:用户连接的电子邮件id也将出现在注册用户中,因为所有电子邮件id都必须注册

    谢谢你的帮助。谢谢

    class RegisteredUser(models.Model):
        first_name = models.CharField(max_length=30)
        last_name = models.CharField(max_length=30)
        email = models.EmailField(unique=True)
        password = models.CharField(max_length=10)
        connected_users = models.ManyToManyField('self', blank=True, symmetrical=False)
    
        def __unicode__(self):
            return self.email
    
    api现在如下所示:

    ru = RegisteredUser.objects.get(id=1)
    another_user = RegisteredUser.objects.get(email='name@example.com')
    ru.connected_users.add(another_user)
    uc = ru.connected_users.all()
    for user in uc:
        print user.first_name, user.last_name, user.email
    

    实现友谊的最好方法是使用Django的ManyToManyField

    您可以在此处阅读更多信息:

    此外,为了解决您对查询的困惑,使用“uc”变量,您可以执行以下操作:

    uc.email
    用于电子邮件id
    uc.user\u connection.first\u name
    用于firstname


    您可以在此处阅读有关Django查询和对象的更多信息:

    在User\u Connections中,电子邮件和connection\u email有什么区别?在User\u Connections中,“email”是要搜索其连接的用户的电子邮件id,connection\u email是连接(朋友)的电子邮件id。