In my Application I am trying to query a field which in depth requires a reverse lookup. Let me explain by Models
Models.py
class User(AbstractUser):
is_employee = models.BooleanField(default=False)
is_client = models.BooleanField(default=False)
class Client(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
client_name = models.CharField(max_length=500, default=0)
class MaterialRequest(models.Model):
owner = models.ForeignKey(User, on_delete=models.CASCADE)
flows = models.ManyToManyField(MaterialRequestFlow)
is_allocated = models.BooleanField(default=False)
class Allotment(models.Model):
transaction_no = models.IntegerField(default=0)
dispatch_date = models.DateTimeField(default=datetime.now)
send_from_warehouse = models.ForeignKey(Warehouse, on_delete=models.CASCADE)
sales_order = models.ForeignKey(MaterialRequest, on_delete=models.CASCADE)
Now I want to query Allotment which are created by a particular Client. In the frontend I have a dropdown of Clients which sends the id of the Client
Here's my function for this:
Views.py
class AllotmentReport(APIView):
permission_classes = (permissions.IsAuthenticated,)
def get(self, request, *args, **kwargs):
cname = self.kwargs['cname']
if self.kwargs['cname']:
items = Allotment.objects.filter(sales_order__owner??? = cname).order_by('-id') #Need Help Here
else:
items = Allotment.objects.all().order_by('-id')
serializer = AReportSerializer(items, many=True)
return Response(serializer.data, status=status.HTTP_201_CREATED)
Also I'd like to know If there is a better alternative to do that
cname?