有没有办法根据 ManyToManyField 检查 request.user

发布于 2024-11-18 03:27:52 字数 351 浏览 1 评论 0原文

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

示例:

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

我有:

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

只是想知道是否有一种方法可以根据关注者表检查 request.user.id 的特定 ID。

谢谢大家。

史蒂夫

I have a small problem and wondering if someone can help me out. I'm trying to do a check to see if the request.user is one of the user's in the ManyToMany relationship table. Is there a way to accomplish this?

Example:

I want to check if the user is following the business page, and if they are, give them the ability to unfollow it and vice versa.

I have:

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

Just wondering if theres a way to check the request.user.id against the followers table for that specific id.

Thanks everyone.

Steve

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

望喜 2024-11-25 03:27:52

这种“djangoic”方式来做到这一点:

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

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

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

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

This "djangoic" way to do it:

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

The more "pythonic" way, which is not recommended because it is very inefficient db wise:

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

(This later one loads all users data into python, while the first one uses a db query)

独行侠 2024-11-25 03:27:52

你应该可以轻松检查

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

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

you should be easily able to check

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

if request.user in this_page.followers.all():
    ... 
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文