Django-query: получение значения родительского поля на основе детского поля
Прошу прощения, если я не очень четко сформулировал запрос, который я пытаюсь построить, основываясь на следующих моделях:
class BankingDetail(models.Model):
sfAttachmentID = models.CharField(max_length=18, unique = True)
created = models.DateTimeField(auto_now_add=True)
class TransactionBankDetail(models.Model):
bankingDetail = models.ForeignKey(BankingDetail, on_delete=models.CASCADE, related_name='BankingDetails')
institution = models.TextField(blank=True, unique = False, null=True)
Я пытаюсь найти, какие учреждения у меня есть и сколько их. Однако, поскольку 1 BankingDetail может иметь несколько TransactionBankDetail, я хочу подсчитать эти значения только один раз. Другими словами, основываясь на моем запросе:
#institution_by_attachments = TransactionBankDetail.objects.filter(institution__isnull=False).values('bankingDetail__sfAttachmentID', 'institution').annotate(total=1).order_by('total').reverse()
institution_by_attachments = TransactionBankDetail.objects.filter(institution__isnull=False).values('bankingDetail__sfAttachmentID', 'institution')
for i in institution_by_attachments:
print(i)
мой результат будет выглядеть как
{'bankingDetail__sfAttachmentID': '0067F0000bCRuSx', 'institution': 'Atlantic'}
{'bankingDetail__sfAttachmentID': '0067F0000bCRuSx', 'institution': 'Atlantic'}
{'bankingDetail__sfAttachmentID': '0067F0000bCRuSx', 'institution': 'Atlantic'}
{'bankingDetail__sfAttachmentID': '0067F0000bCRuSx', 'institution': 'Atlantic'}
{'bankingDetail__sfAttachmentID': 'Ost89Porque-111', 'institution': 'Atlantic'}
{'bankingDetail__sfAttachmentID': '0060p000008ieSm', 'institution': 'South Pacific'}
{'bankingDetail__sfAttachmentID': '0060p000008ieSm', 'institution': 'South Pacific'}
{'bankingDetail__sfAttachmentID': '0060p000008ieSm', 'institution': 'South Pacific'}
{'bankingDetail__sfAttachmentID': '0060p000008ieSm', 'institution': 'South Pacific'}
{'bankingDetail__sfAttachmentID': '0060p000008ieSm', 'institution': 'South Pacific'}
{'bankingDetail__sfAttachmentID': '0060p000008lpYC', 'institution': 'Africa'}
{'bankingDetail__sfAttachmentID': '0060p000008lpYC', 'institution': 'Africa'}
{'bankingDetail__sfAttachmentID': '0060p000008lpYC', 'institution': 'Africa'}
{'bankingDetail__sfAttachmentID': '12365478987test123', 'institution': 'South Pacific'}
{'bankingDetail__sfAttachmentID': '12365478987test123', 'institution': 'South Pacific'}
{'bankingDetail__sfAttachmentID': '12365478987test123', 'institution': 'South Pacific'}
Если я использую это для моей совокупности, я получу неправильные результаты:
Atlantic 5
South Pacific 8
Africa 3
Что я хочу:
South Pacific 2
Atlantic 1
Africa 1