Ramesh K
Ramesh K

Reputation: 302

python Django model viewset -To get current user id

I want to get current user id to pass

class document_typeViewSet(viewsets.ModelViewSet):
   user = User.objects.get(id=request.user.id)
   group = user.group.get()
   queryset = document_type.objects.filter(role_id=group)
   serializer_class = document_typeSerializer

I am getting an error AttributeError: module 'request' has no attribute 'user'"

Upvotes: 0

Views: 3161

Answers (2)

Usman Maqbool
Usman Maqbool

Reputation: 3371

update your code:

class document_typeViewSet(viewsets.ModelViewSet):
    def function_name(self, request):
        user = User.objects.get(id=request.user.id)
        group = user.group.get()
        queryset = document_type.objects.filter(role_id=group)
        serializer_class = document_typeSerializer

Then you will get request.user.id.

Upvotes: 1

JPG
JPG

Reputation: 88429

Assuming you need USER instance while creation (new instance creation), So you have to override create() as below,

class document_typeViewSet(viewsets.ModelViewSet):
    queryset = document_type.objects.filter(role_id=group)
    serializer_class = document_typeSerializer

    def get_user(self, request):
        return request.user

    def create(self, request, *args, **kwargs):
        # create new "document_type" instance
        current_user = request.user
        # do something with "current_user"
        return super().create(request, *args, **kwargs)


Similarly, you can access the logged-in user whereever in your CBV, if you have a Valid request object

Upvotes: 0

Related Questions