我正在尝试在两个表,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)
从User_Connection获取此注册用户的连接:
uc = User_Connections.objects.filter(user_connection=ru)
现在我如何显示用户连接'来自User_Connection的电子邮件ID和来自Registered_Users的每个用户连接的first_name。
让我知道是否有更好的方法来实现这一目标。
注意:用户连接'电子邮件ID也将出现在Registered_Users中,因为必须注册所有电子邮件ID。
感谢任何帮助。感谢。
答案 0 :(得分:1)
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
答案 1 :(得分:0)
实现友谊的最佳方式是在Django中使用ManyToManyField :
您可以在此处详细了解:https://docs.djangoproject.com/en/1.6/ref/models/fields/#ref-manytomany
另外,为了解决您对查询的疑惑,请使用' uc'你可以做的变量:
uc.email
电子邮件ID
和
名字的uc.user_connection.first_name
。
您可以在此处阅读有关Django查询和对象的更多信息:https://docs.djangoproject.com/en/1.6/topics/db/queries/