当前位置: 首页 > 面试题库 >

如何使用Django在一个查询中从多个表中进行选择?

柴英光
2023-03-14
问题内容

我有两个表,一个“公司”和一个“员工”:

class Company(models.Model):
    name = models.CharField(max_length=60)

class Employee(models.Model):
    name = models.CharField(max_length=60)
    company = models.ForeignField(Company)

我想在表中列出每个员工,并在其旁边列出公司。通过调用employees = Employee.objects.all()并在模板循环中通过并调用,这非常简单{{employee.company.name}}

该解决方案的问题在于,将为循环中的每个项目创建一个新查询。因此,对于每个员工,公司都会有一个查询,看起来像这样:

SELECT `company`.`id`, `company`.`name`
FROM `company`
WHERE `company`.`id` = 1 # This will of course be the employee.company_id

相反,我希望最初在获取雇员的同一查询中加入此联接。像这样:

SELECT `employee`.`name` AS `name`,
       `company`.`name` AS `company_name`
FROM `employee` INNER JOIN `company` ON `employee`.`company_id` = `company`.`id`

Django QuerySet是否可能?如果没有,有没有办法可以解决此问题(没有原始sql)?还是应该忽略,缓存并认为这种行为已“优化”?


问题答案:

使用
select_related() 将预先填充适当的属性:

Employee.objects.select_related()


 类似资料:
  • 我将编写此查询,它在Console中工作。sql或Workbench中,但当我在@Query中使用它时,我得到了一个语法错误! 在我的IDE中,错误是在下次选择

  • 问题内容: 我有桌子: 我想写一个返回BookName,FirstName,LastName,RubricName的SELECT查询。 我有两个单独的查询,但我不知道如何在一个选择中编写此查询。这就是我得到的: 它工作正常,但如何在一个选择中编写? 我尝试这样做,但是不起作用: 它返回错误: 问题答案: 试试这个查询

  • 问题内容: 我正在尝试学习如何在Java程序中使用sqlite数据库。(不是Android)。我转到此链接,下载了jdbc库并复制了示例。该示例工作无误。然后,我向数据库中添加了另一个表,并希望将两个表连接起来,并从每个表中选择一次列。我在从数据库进行查询的行上收到错误。我尝试了多种不同的方式来联接表和进行选择,但是每次我遇到异常时。有人可以告诉我正确的语法以在sqlite中联接两个表吗?这是我的

  • 我的表是: 我有一个包含10,000个地址的列表,如果地址存在于表中,我将循环访问该列表以检索相应的纬度/经度。 查询如下所示: 然后我检查结果集,看看是否有匹配。然后通过上面的查询循环其他9,999个地址,这花费的时间太长了。 是否有一种方法可以创建一个包含所有10000个地址的查询,并返回一个包含4列的结果集: 任何未找到地址在结果集列中都应该有一个空(0或null)纬度/经度值。我假设我可以

  • 问题内容: 我有两个用于查询表中行的SQL查询,具体取决于类型2或3。 查询1: 查询2: 现在,我只想获取和使用一个查询的值。如何使用一个查询获得计数。有没有办法做到这一点。我正在使用SQLite数据库。 编辑: 我想要分别为和的值,而不是两者都在一起(不使用)。 问题答案: 尝试使用 对于两个变量:

  • 问题内容: 这是我的代码: 您可以看到我要执行的操作,但是我不确定如何正确编写此查询。 我得到的继承人错误: 警告:mysql_fetch_assoc():提供的参数不是有效的MySQL结果资源 这是我的mysql_fetch_assoc: 问题答案: 尝试改变…的喜欢 …至…