2017-08-02 17 views
0

私はオーナーによってクエリーセットをフィルタリングしようとしていますが、何らかの理由でを使用するとNameErrorになります。名前 'self'はクラスで定義されていませんか?

class PackageListView(LoginRequiredMixin, ListView, Self): 
    model = Package 
    user = self.request.user 
    queryset = Package.objects.filter(owner=user).order_by('-received_date') 

この問題を修正するにはどうすればよいですか?

+0

sを大文字にする---> Self.request.user – ja08prat

+0

あなたのパラメータの名前は 'self'ではなく' self'(大文字に注意)です。ほとんどのプログラミング言語(Pythonを含む)は大文字と小文字が区別されます – litelite

答えて

2

querysetは、クラスがロードされるときに定義されます。この時点でself.request.userにアクセスすることはできません。代わりにget_querysetを上書きしてください。

class PackageListView(LoginRequiredMixin, ListView): 
    model = Package 

    def get_queryset(self): 
     user = self.request.user 
     return Package.objects.filter(owner=user).order_by('-received_date') 

注私はclass PackageListViewラインからSelfを削除した - それは間違いのように見えました。

+0

ありがとうございます。彼のプロジェクトで父親と働くことを始めました。私たちはこの問題についてほとんど頭を悩ませました。 – tabuu9

関連する問題