get_queryset() メソッドが結果を返さない場合がある Django に ListView があります。これを行うには、次の 3 つの方法を試しました。
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
3 番目のオプションのみが、クラス ベースの ListView で機能します。ListView がモデル属性にアクセスしようとすると、属性エラーで他のオプションがクラッシュします。これは私を驚かせ、MRO の問題を引き起こす可能性のある場所にモデルをインポートする必要があるため、苦痛です。
私は何を間違っていますか/何を別の方法で行うべきですか?
更新: 問題は、クラス ビュー メソッドを介して空のクエリセットを返す正しい方法は何get_queryset()
ですか?
更新:属性にアクセスしようとすると属性エラーが発生する Django の一般的なビューの行は次のmodel
とおりです: https://github.com/django/django/blob/stable/1.5.x/django/views/generic/list.py #L166 .