【问题标题】:Is there a way to check request.user against ManyToManyField有没有办法根据 ManyToManyField 检查 request.user
【发布时间】:2011-09-25 09:15:32
【问题描述】:

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

例子:

我想检查用户是否正在关注业务页面,如果是,则让他们能够取消关注,反之亦然。

我有:

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

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

谢谢大家。

史蒂夫

【问题讨论】:

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


    【解决方案1】:

    这种“djangoic”方式:

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

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

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

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

    【讨论】:

      【解决方案2】:

      您应该可以轻松检查

      try:
          this_page = BusinessPages.objects.get(slug=slug)
      except BusinessPage.DoesNotExist:
          raise Http404
      
      if request.user in this_page.followers.all():
          ... 
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2015-08-12
      • 1970-01-01
      • 2021-09-16
      • 2021-04-16
      • 2014-01-11
      相关资源
      最近更新 更多