我正在尝试在我的网站上完成类似于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对象代表跟随的人,那么让每个人都关注它们的适当查询是什么?
答案 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
。
显然,您可能希望重命名属性以反映这些关系,因为followed
和is_followed
可能有点令人困惑,但这就是您的做法。