我已经被困了几个小时,无法找出正确的方法来做到这一点。所以基本上我知道循环并不是一个很好的做法,因为如果我们有很多用户,系统就会开始计时。所以我的想法是选择正确的方式来获得我需要的东西。
这是我们的核心方案:
我需要制作这种“桌子”,这些是我需要的东西:
这就是我们前端会显示的东西,所以现在,我只需要收集正确的数据并将其传递给我们的 FE。我们使用 celery 任务,所以时间总是固定的(例如周一下午 6 点)。
这是我迄今为止尝试过的..
for user in User.objects.all():
start_date = timezone.now() - timedelta(weeks=1)
# How to loop correctly over every user and check for invoices??
invoices = InvoiceItem.objects.select_related('invoice', 'invoice__operation_ptr_id')
# invoices[0].operation_ptr_id ???
Run Code Online (Sandbox Code Playgroud)
循环for user in User.objects.all()可能应该替换为annotate. 我如何建立关系以获取发票、取款、费用?
尝试从 User 而不是 InvoiceItem 模型进行查询
我不确定您具体需要返回前端什么,但如果需要,在做了一些注释后返回实际值应该很容易
要获取用户的发票数量,请尝试以下操作:
from django.db.models import Count
User.objects.annotate(total_invoices=Count("invoices"))
Run Code Online (Sandbox Code Playgroud)
至于提款和费用,这些模型似乎与 User 模型完全没有关系。我建议更新您的模型以添加它们之间的关系,并像上面的查询一样查询它们。
我还假设用户=客户,因为您实际上没有在其他帖子中提供客户模型。
| 归档时间: |
|
| 查看次数: |
167 次 |
| 最近记录: |