django - 在 Django 中查询用户相关对象
问题描述
在我的应用程序中,我试图查询一个需要反向查找的字段。让我通过模型来解释
模型.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)
现在我想查询Allotment
哪些是由特定的Client
. 在前端,我有一个下拉列表,其中Clients
发送id
Client
这是我的功能:
视图.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)
我也想知道是否有更好的选择
解决方案
def get(self, request, *args, **kwargs):
cname = self.kwargs['cname']
if self.kwargs['cname']:
client = Client.objects.get(id=cname)
items = Allotment.objects.filter(sales_order__owner=client.user).order_by('-id')
else:
items = Allotment.objects.all().order_by('-id')
serializer = AReportSerializer(items, many=True)
return Response(serializer.data, status=status.HTTP_201_CREATED)
推荐阅读
- json - 如何将页面保存到 Wayback Machine?
- esp32 - 为什么我会得到调试异常原因:堆栈金丝雀观察点已触发(主要)?
- amazon-dynamodb - DynamoDB 批量写入项目限制
- html - Bootstrap 4 进度条对齐
- scikit-image - 如何实现 PIL 着色功能?
- spring - Spring Boot:配置继承
- python - 我如何告诉熊猫在多年中对相同的月份进行分组?
- r - R中具有大稀疏张量的算术/逻辑运算
- c++ - 如何从一个在循环内使用迭代器的函数内部使用 getter 的类中检索特定成员?
- react-native - 如何从 Expo / React Native 将图像分享到 Instagram 故事