【发布时间】:2017-11-09 20:42:39
【问题描述】:
我有一个这样的模型:
class mymodel(models.Model):
user1 = models.CharField(max_length=255, null=True, blank=True)
user2 = models.CharField(max_length=255, null=True, blank=True)
paid = models.FloatField(default=0)
reason = models.CharField(max_length=150, choices=REASON_NAMES, null=True, blank=True)
我有两个这样的查询:
users_trx1 = mymodel.objects.values('user1').annotate(r1_c=Count(
Case(
When(reason='REASON1', then=1),
output_field=IntegerField()
)
)).annotate(r2_c=Count(
Case(
When(reason='REASON2', then=1),
output_field=IntegerField()
)
)).order_by('user1')
第二个查询得到支付给 user2 的总和:
users_trx2 = mymodel.objects.values('user2').annotate(r1_s=Sum(
Case(
When(reason='REASON1', then='paid'),
default=0.0,
output_field=FloatField()
)
)).annotate(r2_s=Sum(
Case(
When(reason='REASON2', then='paid'),
default=0.0,
output_field=FloatField()
)
)).order_by('user2')
现在我需要一种方法来左连接这两个查询。意思是,我需要一个新的查询来让我进入每一行:(user1, r1_c, r1_s, r2_c, r2_s)。
我需要连接以从 users_trx2 查询中获取与 user1 匹配的 user2 值来自 users_trx1 查询。
我正在使用带有 mysql 后端的 Django 1.11
【问题讨论】: