2017-12-18 16 views
0

Django JWTで認証を受けるユーザの通知を取得するビューセットAPIがありますが、エラーが発生しました。どうぞご覧ください!Django RestフレームワークでAnonymousUserでログインする必要があります

ビューセット:

from api.notifications.models import Notification 
from rest_framework.generics import (ListAPIView) 
from api.notifications.serializers import (NotificationListSerializer) 
from api.pagination import NewFeedPagination 
from rest_framework.permissions import AllowAny 
from api.permissions import IsOwnerOrReadOnly 

class NotificationListAPIView(ListAPIView): 
    permission_classes = [AllowAny] 
    serializer_class = NotificationListSerializer 
    ordering_fields = 'date' 

    def get_queryset(self, *args, **kwargs): 
     queryset_list = Notification.objects.filter(to_user=self.request.user) 
     return queryset_list 

URLにアクセスし、ログインすると、それは成功します。しかし、それはログインしていない、それはエラーになった:int() argument must be a string or a number, not 'AnonymousUser'。私はどのようにAnonymousUserを設定することができますか、URLはログインページに来るでしょう:localhost:8000/admin?

すべてのトレースバックのエラー: トレースバック:あなたのエラーとして

File "C:\Python27\lib\site-packages\django\core\handlers\exception.py" in inner 
    41.    response = get_response(request) 

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response 
    187.     response = self.process_exception_by_middleware(e, request) 

File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in _get_response 
    185.     response = wrapped_callback(request, *callback_args, **callback_kwargs) 

File "C:\Python27\lib\site-packages\django\views\decorators\csrf.py" in wrapped_view 
    58.   return view_func(*args, **kwargs) 

File "C:\Python27\lib\site-packages\django\views\generic\base.py" in view 
    68.    return self.dispatch(request, *args, **kwargs) 

File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch 
    489.    response = self.handle_exception(exc) 

File "C:\Python27\lib\site-packages\rest_framework\views.py" in handle_exception 
    449.    self.raise_uncaught_exception(exc) 

File "C:\Python27\lib\site-packages\rest_framework\views.py" in dispatch 
    486.    response = handler(request, *args, **kwargs) 

File "C:\Python27\lib\site-packages\rest_framework\generics.py" in get 
    201.   return self.list(request, *args, **kwargs) 

File "C:\Python27\lib\site-packages\rest_framework\mixins.py" in list 
    40.   queryset = self.filter_queryset(self.get_queryset()) 

File "C:\Users\User\Desktop\FeedGit\backend\api\notifications\views.py" in get_queryset 
    16.   queryset_list = Notification.objects.filter(to_user=self.request.user) 

File "C:\Python27\lib\site-packages\django\db\models\manager.py" in manager_method 
    85.     return getattr(self.get_queryset(), name)(*args, **kwargs) 

File "C:\Python27\lib\site-packages\django\db\models\query.py" in filter 
    782.   return self._filter_or_exclude(False, *args, **kwargs) 

File "C:\Python27\lib\site-packages\django\db\models\query.py" in _filter_or_exclude 
    800.    clone.query.add_q(Q(*args, **kwargs)) 

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in add_q 
    1261.   clause, _ = self._add_q(q_object, self.used_aliases) 

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in _add_q 
    1287.      allow_joins=allow_joins, split_subq=split_subq, 

File "C:\Python27\lib\site-packages\django\db\models\sql\query.py" in build_filter 
    1217.    condition = lookup_class(lhs, value) 

File "C:\Python27\lib\site-packages\django\db\models\lookups.py" in __init__ 
    24.   self.rhs = self.get_prep_lookup() 

File "C:\Python27\lib\site-packages\django\db\models\fields\related_lookups.py" in get_prep_lookup 
    112.     self.rhs = target_field.get_prep_value(self.rhs) 

File "C:\Python27\lib\site-packages\django\db\models\fields\__init__.py" in get_prep_value 
    962.   return int(value) 

Exception Type: TypeError at /api/v1/notifications/ 
Exception Value: int() argument must be a string or a number, not 'AnonymousUser' 
+0

TraceBackエラー全体を投稿してください。どのファイルからどのエラー番号が表示されますか? –

+0

トレースバック、仲間! –

答えて

0

は言う:

Exception Value: int() argument must be a string or a number, not 'AnonymousUser' 

これはあなたの代わりにだけなのでIDを渡す完全なユーザーオブジェクトを渡しているNotificationフィルタリングすることを意味します

この行を変更するとこれが動作します

16.   queryset_list = Notification.objects.filter(to_user=self.request.user.id) 
関連する問題