有没有办法检查request.user对ManyToManyField

时间:2011-06-29 17:51:32

标签: django django-models django-views django-orm

我有一个小问题,想知道是否有人可以帮助我。我正在尝试检查request.user是否是ManyToMany关系表中的用户之一。有没有办法实现这个目标?

示例:

我想检查用户是否关注了商家页面,如果他们是,请让他们取消关注,反之亦然。

我有:

followers = models.ManyToManyField(User, related_name="Followers", null=True, blank=True)

只是想知道是否有办法检查request.user.id针对特定id的关注者表。

谢谢大家。

史蒂夫

2 个答案:

答案 0 :(得分:2)

这种“djangoic”方式:

if page.followers.filter(id=request.user.id).exists():
   do_something()

更“pythonic”的方式,不推荐,因为它是非常低效的数据库方式:

if request_user in page.followers.all():
   do_something()

(稍后将所有用户数据加载到python中,而第一个使用db查询)

答案 1 :(得分:0)

您应该可以轻松查看

try:
    this_page = BusinessPages.objects.get(slug=slug)
except BusinessPage.DoesNotExist:
    raise Http404

if request.user in this_page.followers.all():
    ...