Мне нужно объединить два списка, которые имеют аналогичные значения в другом третьем списке с различными полями - PullRequest
0 голосов
/ 11 апреля 2019

В моих моделях есть следующие коды:

class Meta(models.Model):
    conta = models.ForeignKey(Conta, on_delete=models.CASCADE)
    ccusto = models.ForeignKey(Ccusto, on_delete=models.CASCADE)
    data = models.DateField()
    valor_meta = models.DecimalField(max_digits=8, decimal_places=2)

    def __str__(self):
        return '%s %s %s %s %s' % (self.conta, ':',self.data.strftime("%d %m %Y"),':',self.ccusto)

class Despesa(models.Model):
    conta = models.ForeignKey(Conta, on_delete=models.CASCADE)
    ccusto = models.ForeignKey(Ccusto, on_delete=models.CASCADE)
    data = models.DateField()
    valor_despesa = models.DecimalField(max_digits=8, decimal_places=2)
    chave = models.CharField(max_length=100)

    def __str__(self):
        return str(self.id)

И в моих представлениях следующие коды:

mes = request.POST['selectmes']

lista = Despesa.objects.filter(data__month=mes).values('conta__conta_nome','ccusto__ccusto_nome').order_by('conta__conta_nome').annotate(sum_despesa=Sum('valor_despesa'))

lista2 = Meta.objects.filter(data__month=mes).values('conta__conta_nome','ccusto__ccusto_nome').order_by('conta__conta_nome').annotate(sum_meta=Sum('valor_meta'))

Это генерирует два списка, как это:

conta_nome | ccusto | valor_despesa

и

conta_nome | ccusto | valor_meta

Но мне нужно это:

conta_nome | ccusto | valor_despesa | valor_meta

Как мне это сделать?

...