gpt4 book ai didi

django - 如何与 prefetch 相关和 prefetch 进行聚合

转载 作者:行者123 更新时间:2023-12-02 03:02:57 24 4
gpt4 key购买 nike

我有两个模型诊所和 ClinicCredits:我想要一份带有可用余额的诊所列表问题是,如果我使用注释,我必须使用 ClinicCredits 的查询集循环获取可用的平衡:

class Clinic(models.Model):
"""
clinic model
"""
user = models.OneToOneField(User, related_name="clinic", primary_key=True,
on_delete=models.CASCADE)

def __str__(self):
return self.name

class Meta:
db_table = 'clinic'




class ClinicCredits(models.Model):
"""
credit details for clinic
"""
clinic = models.ForeignKey(Clinic, on_delete=models.CASCADE, related_name='c_credits')
credits = models.FloatField('credits', default=0.0)
balance = models.FloatField('balance', default=0.0, help_text="balance after deduction of credits")

def __str__(self):
return self.clinic.name

class Meta:
db_table = 'clinic_credits'

这是我获取诊所的查询:

    clinics = Clinic.objects.filter(practice_id__in=user.dietitian.practiceid).order_by(
'user__date_joined').prefetch_related(Prefetch('c_credits',ClinicCredits.objects.filter(balance__gt=0),'credit_'))

在这种情况下我如何使用聚合,或者是否有其他方法来检索诊所列表及其可用信用。

最佳答案

您可以使用annotate(...)这样尝试:

clinics = Clinic.objects.filter(
practice_id__in=user.dietitian.practiceid
).order_by('user__date_joined').prefetch_related(
Prefetch(
'c_credits',
ClinicCredits.objects.filter(balance__gt=0),
'credit_'
)
)<b>.annotate(
total_cred=Sum('c_credits__balance')
)</b>

关于django - 如何与 prefetch 相关和 prefetch 进行聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59675710/

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