【发布时间】:2021-06-03 14:15:44
【问题描述】:
我想在 Django 中执行一个查询,该查询通过外键在多个表中检索相关数据。目前我必须在每个表上运行一个查询,例如(房屋、家具、人)使用门牌号作为过滤器。
在 SQL 中,我可以像这样在一个查询中做到这一点:
SELECT house.number, house.number_of_rooms, furniture.type, people.name
FROM (house INNER JOIN furniture ON house.number = furniture.house_number)
INNER JOIN people ON house.number = people.house_number
WHERE (((house.number)="21"));
这可以在 Django 中完成吗?
请参阅下面的示例模型:
class House(models.Model):
number = models.CharField('House Number', max_length=10, blank=True, unique=True, primary_key=True)
number_of_rooms = models.IntegerField(default=1, null=True)
class Furniture(models.Model):
house_number = models.ForeignKey(House, on_delete=models.CASCADE, null=True)
type = models.CharField('Furniture Type', max_length=50)
class People(models.Model):
house_number = models.ForeignKey(House, on_delete=models.CASCADE, null=True)
first_name = models.CharField('First Name', max_length=50)
【问题讨论】:
标签: django inner-join django-queryset