【发布时间】:2022-10-01 19:50:58
【问题描述】:
如果有人可以帮助我,那就太好了。我被困在这里了。我可以手动执行此操作,但如何根据用户输入执行此操作。
Payment.objects.filter(created_by=42, mode=\'cash\', created_at__range=[\"2021-11-01\", \"2021-11-04\"]).aggregate(Sum(\'amount\'))
这里 created_by 和 date_range 我在这样的 url 中发送:http://127.0.0.1:8000/api/v1/registration/?created_by=42&start_date=2021-06-06&end_date=2021-11-18 所以由和 date_range 创建的 id 总是会改变。并且根据更改总和将返回。
我的模型:
class Payment(TimestampedModel):
customer_visit = models.ForeignKey(
CustomerVisit, on_delete=models.CASCADE, null=True, related_name=\"customer_payments\"
)
mode = models.CharField(choices=PAYMENTCHOICES, max_length=25)
amount = models.FloatField()
ref_no = models.TextField(null=True)
bank = models.ForeignKey(
\"BankDetails\", on_delete=models.CASCADE, null=True, related_name=\"payment_bank\"
)
is_settlement = models.BooleanField(default=False)
created_by = models.ForeignKey(\"Employee\", on_delete=models.DO_NOTHING, null=True,related_name=\'payment_created_by\')
updated_by = models.ForeignKey(\"Employee\", on_delete=models.DO_NOTHING, null=True,related_name=\'payment_updated_by\')
我的观点 :
class UserWiseCollectionView(ListAPIView):
permission_classes = [
IsAuthenticated,
]
pagination_class = CustomPagination
model = CustomerVisit
serializer_class = UserWiseCollectionSerializer
filter_backends = [DjangoFilterBackend]
filterset_fields = [\'created_by\']
def get_queryset(self):
start_date = self.request.query_params.get(\"start_date\")
end_date = self.request.query_params.get(\"end_date\")
emp_id = self.request.query_params.get(\"emp_id\")
items = self.model.objects.all()
if start_date and end_date:
items = items.filter(
created_at__range=[start_date, end_date]
)
if emp_id is not None:
items = items.filter(phelebotomist_id = emp_id)
return items
-
请同时更新视图部分!
-
更新@AbdulNiyasPM