这是关于一个应用程序,它启用了一些协作审核功能,有点类似于 Stackoverflow。
当前状态
我有一个这样的 Django ORM 查询:
versions = Version.objects.filter(is_reviewed=False).exclude(moderations__user__pk=request.user.id).order_by('content_type__id', 'object_id', '-number').distinct('content_type', 'object_id')
每个内容对象可以具有由用户创建的任意数量的版本。我在这里所做的是获取来自其他用户的所有未审核版本,但每个内容对象仅获取最新版本。
问题
但我想添加另一个排除条件:如果内容对象具有较新版本,is_reviewed=True
则不应返回以前的版本。不过,未审查的较新的应退回。知道怎么做吗?
一些例子。我假设这里的所有版本都是针对同一个内容对象的。
示例 A
- “第一版” - 未审查
- “改进版” - 未审查
- “更完善的版本” - 未审查
这应该返回第三行。按预期工作。
示例 B
- “第一版” -审查
- “改进版” - 未审查
- “更完善的版本” - 未审查
这应该返回第三行。按预期工作。
示例 C
- “第一版” - 未审查
- “改进版” -审查
- “更完善的版本” - 未审查
这应该返回第三行。按预期工作。
示例 D
- “第一版” - 未审查
- “改进版” - 未审查
- “更完善的版本” -评论
这应该不返回任何行。目前这不起作用。它将返回第二行,这不是它打算做的。
/编辑