如何防止django中的外键查找

时间:2015-02-14 02:41:16

标签: python mysql django

我正在尝试执行以下查询:

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查找?

1 个答案:

答案 0 :(得分:3)

您应该使用__isnull查找关键字。

Catalog.objects.filter(master__isnull=True).values_list('is_tv', flat=True).count()