Django多个左连接

问题描述 投票:1回答:1

我想知道如何在Django中实现以下左连接sql查询。我已经了解Person.objects.raw()

select person.name, phone.number, email.emailaddr, home.address
from person
left join phone
    on person.id = phone.person_id
left join email
    on person.id = email.person_id
left join home
    on person.id = home.person_id;

假设以下模型:

class Person(models.Model):
    name = models.CharField(max_length=30)

class Phone(models.Model):
    number = models.CharField(max_length=30)
    person = models.ForeignKey('Person')

class Email(models.Model):
    emailaddr = models.CharField(max_length=30)
    person = models.ForeignKey('Person')

class Home(models.Model):
    address = models.CharField(max_length=30)
    person = models.ForeignKey('Person')
django django-models
1个回答
3
投票

我认为这应该可以解决问题:

Person.objects.values_list(
    'name', 
    'phone__number', 
    'email__emailaddr', 
    'home__address'
)
© www.soinside.com 2019 - 2024. All rights reserved.