Django 一对一关系查询集

Ans*_*rta 3 python django django-models django-views django-rest-framework

我有以下两个型号

class A(models.Model):
  name = models.CharField()
  age = models.SmallIntergerField()

class B(models.Model):
  a = models.OneToOneField(A)
  salary = model.IntergerField()
Run Code Online (Sandbox Code Playgroud)

不,我有他们两个的记录。我想用已知的 id 查询模型 A,并且我想要 A 和 B 记录。

SQL 查询是:

SELECT A.id, A.name, A.age, B.salary
FROM A INNER JOIN B ON A.id = B.a_id
WHERE A.id=1
Run Code Online (Sandbox Code Playgroud)

请向我提供 django 查询(通过使用 orm)。我想用一个查询集来实现这一目标。

zxz*_*zak 5

q = B.objects.filter(id=id).values(\'salary\',\'a__id\',\'a__name\',\'a__age\')\n
Run Code Online (Sandbox Code Playgroud)\n\n

这将返回一个ValuesQuerySet

\n\n
\n

价值观

\n\n

value(*fields)返回ValuesQuerySet \xe2\x80\x94 一个QuerySet子类,当用作可迭代对象时,\n 返回字典,而不\n 模型实例对象。

\n\n

这些字典中的每一个都代表一个对象,其键对应于模型对象的属性名称。

\n
\n\n

您实际上可以打印q.query以获取 后面的 sql 查询QuerySet,在本例中这正是您所要求的。

\n