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)。我想用一个查询集来实现这一目标。
q = B.objects.filter(id=id).values(\'salary\',\'a__id\',\'a__name\',\'a__age\')\nRun Code Online (Sandbox Code Playgroud)\n\n这将返回一个ValuesQuerySet
\n \n\n\n\nvalue(*fields)返回ValuesQuerySet \xe2\x80\x94 一个QuerySet子类,当用作可迭代对象时,\n 返回字典,而不\n 模型实例对象。
\n\n这些字典中的每一个都代表一个对象,其键对应于模型对象的属性名称。
\n
您实际上可以打印q.query以获取 后面的 sql 查询QuerySet,在本例中这正是您所要求的。