0

現在ログインしているユーザーに基づいてフィルタリングしようとしています。私は ApiKeyAuthentication を使用していますが、これを行うには get_object_list を使用する必要があることを理解しています。私が抱えている問題は、get_object_list 内で現在ログインしているユーザーにアクセスする方法が見つからないように見えることです。request.user を呼び出そうとすると、リクエスト オブジェクトが空になり、問題を解決するための答えが見つからないようです。

クラス DepartmentResource(JSONResource):

class Meta:
    resource_name = 'departments'
    list_allowed_methods = ['get', 'put', 'post', 'delete']
    detail_allowed_methods = ['get', 'put', 'post', 'delete']

    authentication = ApiKeyAuthentication()
    authorization = DjangoAuthorization()

def get_object_list(self, request):
    permissions = department_permissions()
    foo = []
    foo.append(ApiObject(permissions.get_departments_linked_to_user(bundle.request.user)))
    return foo

def obj_get_list(self, request=None, **kwargs):
    return self.get_object_list(request)
4

1 に答える 1

1

多くの調査の結果、私はこれについて間違った方法で行っていることがわかりました。Tastypieにはauthorized_read_listという関数があり、これが私の問題を解決し、この種の問題を解決する理想的な方法のようです. 現在ログインしているユーザーに基づいてフィルター処理しようとしているので、これにより、現在のユーザーに基づいてクエリをフィルター処理できます。これにより、他の誰かが多くの時間を節約できることを願っています。これが私の更新されたコードです:

class FooBarResource(ModelResource):
    class Meta:
        queryset = Foo.objects.all()
        resource_name = 'foobar'
        list_allowed_methods = ['get', 'put', 'post', 'delete']
        authentication = ApiKeyAuthentication()
        authorization = Authorization()

    def authorized_read_list(self, object_list, bundle):
        permissions = department_permissions()
        return object_list.filter(userid=bundle.request.user.id)
于 2013-05-30T16:20:27.657 に答える