假设我有一个父表和子表,它们是通过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 = ?
之类的单一查询?
我想一次查询数据库!
答案 0 :(得分:1)
事实证明,只生成了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;