I have set permissions such that an individual can only view orders limited to hiself. I am trying to view individual orders as a customer and that's where the problem is, it querries using the customer_id which in this case is 9, instead of using the user_id associated to the customer "in this case 7". Viewing orders asn admin works perfectly fine..
OrderViewSet/views.py
class OrderViewSet(ModelViewSet): serializer_class = OrderSerializer permission_classes = [IsAuthenticated] def get_queryset(self): user = self.request.user if self.request.user.is_staff: return Order.objects.all() customer_id = Customer.objects.only("id").get(id=user) return Order.objects.filter(customer_id=customer_id)ERROR:
Traceback (most recent call last): File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/core/handlers/exception.py", line 55, in inner response = get_response(request) ^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/core/handlers/base.py", line 197, in _get_response response = wrapped_callback(request, *callback_args, **callback_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/views/decorators/csrf.py", line 65, in _view_wrapper return view_func(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/rest_framework/viewsets.py", line 124, in view return self.dispatch(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/rest_framework/views.py", line 509, in dispatch response = self.handle_exception(exc) ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/rest_framework/views.py", line 469, in handle_exception self.raise_uncaught_exception(exc) File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/rest_framework/views.py", line 480, in raise_uncaught_exception raise exc File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/rest_framework/views.py", line 506, in dispatch response = handler(request, *args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/rest_framework/mixins.py", line 38, in list queryset = self.filter_queryset(self.get_queryset()) ^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/AdnexumActio/views.py", line 256, in get_queryset return Order.objects.filter(customer=customer) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/manager.py", line 87, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/query.py", line 1476, in filter return self._filter_or_exclude(False, args, kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/query.py", line 1494, in _filter_or_exclude clone._filter_or_exclude_inplace(negate, args, kwargs) File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/query.py", line 1501, in _filter_or_exclude_inplace self._query.add_q(Q(*args, **kwargs)) File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1613, in add_q clause, _ = self._add_q(q_object, self.used_aliases) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1645, in _add_q child_clause, needed_inner = self.build_filter( ^^^^^^^^^^^^^^^^^^ File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1532, in build_filter self.check_related_objects(join_info.final_field, value, join_info.opts) File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1346, in check_related_objects self.check_query_object_type(value, opts, field) File "/home/tacitus/Desktop/blessing/env/lib/python3.11/site-packages/django/db/models/sql/query.py", line 1323, in check_query_object_type raise ValueError(ValueError: Cannot query "Customer object (9)": Must be "User" instance.[09/May/2024 07:24:42] "GET /orders/ HTTP/1.1" 500 145320