gpt4 book ai didi

django - 通过 Django 中的另一个模型查询一个模型

转载 作者:行者123 更新时间:2023-12-04 03:37:28 25 4
gpt4 key购买 nike

我的应用程序中有一个名为 Demand 的模型

class DemandFlows(models.Model):

kit = models.ForeignKey(Kit, on_delete=models.CASCADE)

class Demand(models.Model):

demand_flows = models.ManyToManyField(DemandFlows)
delivery_month = models.DateTimeField(blank=True, null=True)

从这个模型中,我得到了 monthyear 以及那个月使用的套件,如下所示:

    d_o = Demand.objects.all()
for i in d_o:
print("month", i.delivery_month)
m = i.delivery_month
print("m", m.month)
print("y", m.year)
for k in i.demand_flows.all():
print("k", k.kit.pk)

现在我有另一个模型 Allotment,我如何查询这个模型以便获得 kitalloted_quantity 的总和我通过 Demand 模型获得的特定月份?

分配:

class AllotmentFlow(models.Model):

kit = models.ForeignKey(Kit, on_delete=models.CASCADE)
alloted_quantity = models.IntegerField(default=0)


class Allotment(models.Model):


transaction_no = models.IntegerField(default=0)
dispatch_date = models.DateTimeField(default=datetime.now)
flows = models.ManyToManyField(AllotmentFlow)

例如

我从 demand 得到了以下内容:

m 12
y 2020
k 3
k 4
k 5
k 7
k 8
k 9
k 10

那我怎么知道2020年12月kit3,4,5,7,8,9,10的alloted_quantity呢?

套件型号:

class Kit(models.Model):

owner = models.ForeignKey(User, on_delete=models.CASCADE)
kit_name = models.CharField(max_length=500, default=0)
kit_info = models.CharField(max_length=500, default=0)
part_name = models.CharField(max_length=500, default=0)

最佳答案

我想你可以在这里使用 GroupBy 功能:

from django.db.models import Sum

Demand.objects.values('delivery_month__year', 'delivery_month__month').annotate(allotment_qty=Sum('demand_flows__kit__allotmentflow__ alloted_quantity')).values('delivery_month__year', 'delivery_month__month', 'allotment_qty')

更多信息可以在 values() documentation 中找到.

关于django - 通过 Django 中的另一个模型查询一个模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66635409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com