我在 Django 中有一个 ListView,它的 get_queryset() 方法有时不需要返回任何结果。我尝试了三种方法来做到这一点:
return EmptyQuerySet()
return Model.objects.none()
return Model.objects.filter(pk=-1)
这些中的每一个都返回一个略有不同的对象。
django.db.models.query.EmptyQuerySet
其模型属性设置为None
django.db.models.query.EmptyQuerySet
其模型属性设置为Model
django.db.models.query.QuerySet
其模型属性设置为Model
只有第三个选项适用于基于类的 ListView。当 ListView 尝试访问模型属性时,其他选项会因属性错误而崩溃。这让我感到惊讶并且很痛苦,因为它需要我在可能导致 MRO 问题的地方导入模型。
我做错了什么/我应该做些什么不同的事情?
更新:那么问题是,通过类视图方法返回空查询集的正确方法是什么get_queryset()
?
更新:这是 Django 通用视图中尝试访问属性时遇到属性错误的行model
:https ://github.com/django/django/blob/stable/1.5.x/django/views/generic/list.py #L166。