get_queryset() メソッドが結果を返さない場合がある Django に ListView があります。これを行うには、次の 3 つの方法を試しました。
return EmptyQuerySet()return Model.objects.none()return Model.objects.filter(pk=-1)
これらはそれぞれ、わずかに異なるオブジェクトを返します。
django.db.models.query.EmptyQuerySetモデル属性をNonedjango.db.models.query.EmptyQuerySetモデル属性をModeldjango.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 .