如何在 django 中构建查询集来检索用户发布的线程?

发布于 2024-08-04 07:10:12 字数 371 浏览 11 评论 0原文

我正在使用 django-mptt 制作一个线程论坛应用程序。一切都已启动并正在运行,但我在构建一个特定的查询集时遇到了麻烦。

我想检索以下帖子:

  1. 是由 current_user 发布的根节点
  2. 或 具有由 current_user 发布的后代。

到目前为止,我所得到的是:

Post.objects.filter(Q(user = current_user) | Q(  )).exclude(parent__gt = 0)

在我的第二个 QI 中,需要一些东西来判断 current_user 是否已发布其后代之一。有人知道这是否可能吗?

I'm making a threaded forum app using django-mptt. Everything is up and running, but I have trouble building one specific queryset.

I want to retrieve posts which:

  1. are root nodes
  2. are posted by current_user or have a descendant posted by current_user.

What I have so far is this:

Post.objects.filter(Q(user = current_user) | Q(  )).exclude(parent__gt = 0)

in my second Q I need something to tell whether the current_user has posted one of its descendants. Anyone know if it's even possible?

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

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

发布评论

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

评论(1

渔村楼浪 2024-08-11 07:10:12

我认为您无法在一次查询中完成此操作。以下是分两步执行的方法:

thread_ids = Post.objects.filter(user=current_user).values_list('tree_id', flat=True)
posts = Post.objects.filter(tree_id__in=thread_ids, level=0)

获取用户发布的每个线程的 MPTT 树 ID。然后获取每个线程的根节点。

I don't think you can do this in one query. Here's how to do it in two:

thread_ids = Post.objects.filter(user=current_user).values_list('tree_id', flat=True)
posts = Post.objects.filter(tree_id__in=thread_ids, level=0)

This gets the MPTT tree id of every thread which the user has posted in. Then it gets the root node of each of these threads.

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