假设我有一个父表和一个子表,它们是通过 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;