gpt4 book ai didi

python - 检索 Django 中不同用户创建的模型对象

转载 作者:太空宇宙 更新时间:2023-11-03 19:41:22 26 4
gpt4 key购买 nike

我正在制作简单的提要,其中包含当前用户订阅的作者所做的条目。我有 3 个模型,它们是默认用户模型,我的“Post”模型通过外键与用户相关:

class Post(models.Model):
...
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name="posts")
...

“关系”模型有 2 个字段:

follower = models.ForeignKey(User, on_delete=models.CASCADE, related_name="follows")
following = models.ForeignKey(User, on_delete=models.CASCADE, related_name="followed")

所以我编写了这段代码来检索所需的帖子:

user = request.user
posts = Post.objects.filter(author__in = [relation.following_id for relation in user.follows.all()]).all()

老实说,它工作得很好,但是有什么办法可以让我的查询更好吗?谢谢。

最佳答案

是的,您可以在数据库中进行 JOIN,因此:

Post.objects.filter(<b>author__followed__follower=user</b>)

或者,如果您想包含 userauthorPost 对象,您可以使用 Q-对象:

from django.db.models import Q

Post.objects.filter(<b>Q(author=user) | Q(author__followed__follower=user)</b>)

由于您在数据库端执行 JOIN,因此您可以在 一个 个查询中执行此操作,而列表理解将在 2 个查询中执行。

关于python - 检索 Django 中不同用户创建的模型对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60403072/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com