在Django中简单加入

时间:2009-08-13 00:04:49

标签: django django-queryset

我正在尝试在我的网站上完成类似于twitter的操作,其中一个用户可以关注另一个用户。我想选择跟随具有给定ID的用户的所有用户记录。我的关注模式如下:

class Following(models.Model):
  user = models.ForeignKey(User, related_name='is_following')
  followed = models.ForeignKey(User, related_name='is_followed')

我正在使用django.contrib.auth.models用户类。

假设我有一个名为“myUser”的User对象代表跟随的人,那么让每个人都关注它们的适当查询是什么?

2 个答案:

答案 0 :(得分:3)

mipadi的回答缺少“.all”。

在视图中,查询集

followers = my_user.is_followed.all()

返回正在跟踪my_user的Following个对象的列表。要从Following对象f获取关注的用户,请使用f.user

如果关注者在模板上下文中,您可以执行以下操作。

{% for f in followers %}

  {{ f.user }}

{% endfor %}

您可能会发现many to many relationships的Django文档很有用。

答案 1 :(得分:-1)

这就是related_name属性发挥作用的地方 - 它允许您向后关注关系。因此,要让所有用户关注特定用户,您需要使用my_user.is_followed

显然,您可能希望重命名属性以反映这些关系,因为followedis_followed可能有点令人困惑,但这就是您的做法。