Search code examples
djangotastypie

How to get `Test` objects created by actually logged user?


class TestResource(ModelResource):
    user = fields.ForeignKey(UserResource, 'user')
    class Meta:
        queryset = Test.objects.all()
        resource_name = 'test'
        authorization = Authorization()
        authentication = BasicAuthentication()

How to get Test objects created by actually logged user?

All objects:

http:// 127.0.0.1:8000/api/test/?format=json


Solution

  • Assuming you want to return resources based on the currently logged in user, you can limit the resources returned by overriding apply_authorization_limits on the resource. Setting the current user for a POST is just as easy by overriding obj_create.

    See: http://django-tastypie.readthedocs.org/en/latest/cookbook.html#creating-per-user-resources for an example.

    class TestResource(ModelResource):
        user = fields.ForeignKey(UserResource, 'user')
    
        class Meta:
            queryset = Test.objects.all()
            resource_name = 'test'
            authorization = Authorization()
            authentication = BasicAuthentication()
    
        def obj_create(self, bundle, **kwargs):
            return super(TestResource, self).obj_create(bundle,
                user=bundle.request.user)
    
        def apply_authorization_limits(self, request, object_list):
            return object_list.filter(user=request.user)