クエリセットをフィルタリングして、リクエストを行っている現在認証されているユーザーに関連する結果のみをAPIとして作成したいのですが、どのように書けばよいでしょうか。
views.pyを以下のように書くと、NameError: name 'self' is not defined というエラーメッセージが出力されてしまいます。
from rest_framework import viewsets from .models import Accounts from .serializers import AccountsSerializer class AccountsViewSet(viewsets.ModelViewSet): serializer_class = AccountsSerializer user = self.request.user queryset = Accounts.objects.filter(user_id='user')
しかし、
from rest_framework import viewsets from .models import Accounts from .serializers import AccountsSerializer class AccountsViewSet(viewsets.ModelViewSet): serializer_class = AccountsSerializer def get_queryset(self): user = self.request.user return Accounts.objects.filter(user_id='user')
と記述してしまうと、urls.pyの書き方と合っていないようで、うまく修正できないでいます。
from django.urls import path, include from rest_framework import routers from . import views router = routers.DefaultRouter() router.register('userids', views.AccountsViewSet) app_name = 'apiAccounts' urlpatterns = [ path('', include(router.urls)), ]
エラーメッセージ
File "/usr/local/anaconda3/lib/python3.9/site-packages/rest_framework/routers.py", line 137, in get_default_basename assert queryset is not None, '`basename` argument not specified, and could ' \ AssertionError: `basename` argument not specified, and could not automatically determine the name from the viewset, as it does not have a `.queryset` attribute.
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。