Python Django-大小写为false时的筛选器

Python Django-大小写为false时的筛选器,python,django,Python,Django,我有一篇范文。这应该被过滤掉。条件如下: 如果请求不是作者,则所有具有发布日期lte now的文章都将可见 如果请求是作者,则无论发布日期如何,所有具有发布日期lte now的文章以及来自作者的文章都将可见 用简单的语言:每个人都应该只看到那些尚未发表的文章,但作者也可以看到他们的文章 我以为我可以对文章进行注释,然后以某种方式对其进行过滤,但我不知道如何继续或如何做。作者是一个m2m领域 articles = articles.annotate( can_see

我有一篇范文。这应该被过滤掉。条件如下:

如果请求不是作者,则所有具有发布日期lte now的文章都将可见

如果请求是作者,则无论发布日期如何,所有具有发布日期lte now的文章以及来自作者的文章都将可见

用简单的语言:每个人都应该只看到那些尚未发表的文章,但作者也可以看到他们的文章

我以为我可以对文章进行注释,然后以某种方式对其进行过滤,但我不知道如何继续或如何做。作者是一个m2m领域

articles = articles.annotate(
                can_see=Case(
                    When(authors__id__in=[request.user.id], then=Value(True)),
                    default=False,
                    output_field=BooleanField()
                )
            )

根据我对你的代码的推断,你可以在你的过滤器中使用一个简单的或。基本上你会做一些类似的事情:

从django.utils导入时区 从django.db.models导入Q now=时区。now to|show=articles.filterQauthors_uuuid=request.user.id | Qpub_date_uulte=now 这将在Q对象中包含的两个条件之间执行逻辑or。这个查询所说的是,如果每一篇文章的作者的id与请求中的用户id匹配,或者其发布日期小于或等于当前日期,则将其提交


请看一看。

请展示你的模特,这样你就可以得到一个合适的答案哦,天哪,我真的不知道为什么我有时候会这么笨。这肯定行得通。非常感谢。