当前位置: 首页 > 知识库问答 >
问题:

Python,Django:查询组合模型?

章海
2023-03-14

在我的应用程序中,我有多种型号,如:

模型。py:

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


class Coworker(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    company = models.ForeignKey(Company, null=False, blank=False, on_delete=models.CASCADE)

正如你所看到的,一个公司可以包含一个、多个或没有同事!是否可以查询公司,但也可以从相关同事处接收数据?例如,类似这样的事情:

id    |    Company    |    Coworker
1     |    Company_A  |    Coworker_A
2     |    Company_B  |    
3     |    Company_C  |    Coworker_B
4     |    Company_C  |    Coworker_C
5     |    Company_C  |    Coworker_D
6     |    Company_D  |    Coworker_E
7     |    Company_D  |    Coworker_F
8     |    Company_E  |    
9     |    Company_F  |    Coworker_G
10    |    Company_F  |    Coworker_H
...

我的问题是,我不能在同事上查询,因为我不想错过那些没有相关数据的公司!

谢谢你的帮助,祝你度过愉快的一天!

共有1个答案

爱炯
2023-03-14

很简单,由公司查询并为工人预取结果:

Company.objects.prefetch_related("coworker_set").all()

这将为您提供一个公司列表,其中包含属性coworker_set中的员工列表。它还将在单个查询中填充这些属性(这是prefetch_related的全部意义)。

 类似资料:
  • 如何用UNION操作符将多条SELECT语句组合成一个查询 组合查询 并(union) 执行多个查询并将结果作为单个查询结果返回。 一般需要使用组合查询的情况 单个查询中从不同的表类似返回结果数据 单个表执行多个查询,按单个查询返回数据 创建组合查询 检索 IL,IN,MI几个洲的客户报表。 mysql> SELECT cust_name, cust_contact, cust_email

  • 基本上,我有一组顶点ID,我想遍历并从某些外边找到一组顶点。我想把外边后面的顶点与它来自的准确性联系起来。例如:,所以v1有2个输出边(e1和e2)到v2和v4,而v3有2个输出边(e3和e4)到v5和v6。我想要的是得到如下所示的遍历结果 有人能帮我使用Gremlin遍历吗?最接近的例子是

  • 问题内容: 这是我目前最喜欢使用的一项前沿功能,并且很快就会消失。我想将子查询聚合注释到现有查询集上。在1.11之前执行此操作意味着自定义SQL或修改数据库。这是this的文档以及其中的示例: 他们在总体上进行注释,这对我来说似乎很奇怪,但是无论如何。 我正在为此而苦苦挣扎,所以我将其沸腾回到我拥有数据的最简单的真实示例中。我有,其中包含许多Space。使用会使你更快乐,但是-暂时-我仅想使用 注

  • 问题内容: 我有以下模型: 现在,我要查询具有活动Foo的Bar: 我收到诸如以下错误 我该如何实现? 问题答案: 你不能查询模型方法或属性。你可以在查询中使用其中的条件,也可以使用列表推导或Genex在Python中进行过滤。

  • 假设我有一个MongoDB集合,其中包含以下信息: 我想计算按州分组的订单总价的总和,其中项目为“苹果”,颜色为“红色”。我的问题是: 但是,我希望能够将我的结果cust\u id包含在\u id中,它是一个数组/映射/一些结构,其中包含构成我的合计的所有客户id的列表。因此,我希望我的输出包含 是否有办法处理此mongo聚合/查询?或者是一种更好的方式来构造此查询,以便我可以按州分组计算红苹果的

  • 我有一个elasticsearch索引用于存储关于人的信息。为了找到特定的人,我有一些查询,每个查询都单独工作,但是当我使用Bool查询将它们组合起来时,我会得到一个错误。 其中一个查询是对名称的模糊搜索 另一个查询用于搜索在特定日期范围内出生的人 现在我想组合这两个查询。我的bool查询: 虽然当我单独使用它们时,这两个查询都工作得很好,但当把它们组合起来时,我会得到一个错误。我的索引中有名字是