在 Django 中检索一对多 QuerySet



我有以下型号:

class RecipientList(models.Model):
    name = models.CharField(max_length=255)
    list_type = models.CharField(max_length=255)
    status = models.CharField(max_length=255)
class RecipientListEmail(models.Model):
    email = models.CharField(max_length=255)
    recipient_list = models.ForeignKey(RecipientList, on_delete=models.DO_NOTHING)

我正在尝试做的是检索所有收件人列表,对于每个收件人列表,我想获得一组与之关联的收件人列表电子邮件。换句话说,这是一个简单的一对多(1 个收件人列表到多个收件人列表电子邮件)关系,我想在一个结果集中获取所有这些信息。

是否可以在 Django 中不迭代 RecipientList 并单独查询 RecipientListEmail 或编写我自己的 SQL 连接?

这是一个查询,是您想要的映射吗?

output = collections.defaultdict(list)
values = RecipientListEmail.objects.values_list('recipient_list__pk', 'email')
for recipient_id, email in values:
    output[recipient_id].append(email)

最新更新