我正在尝试执行以下查询:
SELECT * FROM catalog WHERE master_id IS NULL
master
字段是ForeignKey,但在这种情况下,我只需要知道它是否为NULL,因此我不需要进行外键查找。但是,如果我这样做:
Catalog.objects.filter(master_id=None).values_list('is_tv', flat=True).count()
以下是它的示例语句:
SELECT ••• FROM `catalog` LEFT OUTER JOIN `main_titlemaster`
ON (`main_catalog`.`master_id` = `main_titlemaster`.`id`)
WHERE `main_titlemaster`.`id` IS NULL
如果不深入原始SQL,如何防止这种无用的FK查找?
答案 0 :(得分:3)
您应该使用__isnull
查找关键字。
Catalog.objects.filter(master__isnull=True).values_list('is_tv', flat=True).count()