对于 Django DetailView,如何 return 在查询集为真的情况下出现 404

How to return a 404 in case of a queryset is true for Django DetailView

我的模型中有一个字段

class myModel(models.Model):
    published = models.BooleanField(
        default=False,
        help_text="Whether this is visible."
    )

到目前为止,我的 detailView 非常简单明了

class myDetailView(DetailView):
    template_name = "detail.html"
    model = myModel

我正在寻找一种方法来在相应的 django.views.generic.DetailView 上呈现 404 错误,以防布尔值为 False。如何实现?

您可以将查询集设置为:

class MyDetailView(DetailView):
    model = myModel
    template_name = 'detail.html'
    <b>queryset = myModel.objects.filter(published=True)</b>

因此它只会考虑 myModel 个对象,其中 published 设置为 True。如果 myModel 对象存在 published=False,那么它将 return 404,因为过滤的查询集将不包含该元素。