Django:在通用 View 中处理空查询集

标签 django django-generic-views

我有一个通用 View ,有时什么也不返回。

在这种情况下我该如何有效处理并提出 404?

我的方法是成功的,但会影响数据库。

class MyListView(ListView):
    template_name = 'template/quest.html'

    def get_queryset(self, *args, **kwargs):

        query = (
            MyModel.objects
            .filter(...)
            .filter(...)
        )

        if query.exists():
            return query
        else:
            raise Http404

最佳答案

设置allow_emptyFalse:

class MyListView(ListView):
    allow_empty = False
    template_name = 'template/quest.html'

    def get_queryset(self, *args, **kwargs):
        return MyModel.objects.filter(...)

如果 get_queryset() 的结果为空(长度为 0),这将引发 Http404

关于Django:在通用 View 中处理空查询集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39333686/

相关文章:

python - 在 Django/Python 中将字符串转换为 int 时遇到问题

python - 将使用 wand 生成的图像保存到 django ImageField

django - 使用外键创建 tastypie 资源而不将外键公开为资源

django中的Python多重继承函数覆盖和ListView

Django detailview get_queryset 和 get_object

django - ModelForm clean_xxxx() 适用于 CharField,不适用于 URLField。 Django 1.5

django - docker-compose 和初始化数据库

python - 如何在应用程序的 urls.py 中设置通用 View ?

django-rest-framework - 如何在DRF中获取并显示父序列化器中的所有子对象

Django auth_view 和通用的基于类的 View