1

我正在尝试在我的网站上完成类似于 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”的用户对象代表被关注的人,那么让每个人都关注他们的适当查询是什么?

4

2 回答 2

3

mipadi 的答案缺少' .all'。

在一个视图中,查询集

followers = my_user.is_followed.all()

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

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

{% for f in followers %}

  {{ f.user }}

{% endfor %}

您可能会发现多对多关系的 Django 文档很有用。

于 2009-08-13T03:42:33.560 回答
-1

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

显然,您可能希望重命名属性以反映这些关系,因为followed并且is_followed可能有点令人困惑,但这就是您要这样做的方式。

于 2009-08-13T00:09:30.140 回答