Django 在单个查询中选择继承的模型



假设我有一个父表和一个子表,它们是通过 django 中的继承实现的。

models.py

class A(models.Model)
a = CharField()
class B(A):
b = CharField()

现在我想在执行B从表中选择列b

B.objects.only('b').get(id=4)

但是此语句查询数据库 2 次:

SELECT `b`.`a_ptr_id`, `b`.`b` FROM `b` WHERE `b`.`a_ptr_id` = 4; args=(4,)
SELECT `a`.`a`, `b`.`a_id` FROM `b` INNER JOIN `a` ON (`b`.`a_ptr_id` = `b`.`id`) WHERE `b`.`a_ptr_id` = 4; args=(4,)

如何使用 django 模型生成像select b from b where a_ptr_id = ?这样的单一查询?

我想查询一次数据库!

事实证明,只生成了 1 个查询。 第二个查询是由于我在调试模式下检查了所有这些查询。我的 IDE 自动评估了对象,导致

使用
SELECT `a`.`a`, `b`.`a_id` FROM `b` INNER JOIN `a` ON (`b`.`a_ptr_id` = `b`.`id`) WHERE `b`.`a_ptr_id` = 4;

最新更新