class SubTable(BaseModel):
guid = models.ForeignKey('MasterTable',related_name='sub_table')
...
class MasterTable(BaseModel):
...
MasterTable.objects.filter(sub_table__total__isnull=False).exclude(
sub_table__total=0).values_list('platform', 'sub_platform')
这条查询语句:
MasterTable.objects.filter(sub_table__total__isnull=False).exclude(
sub_table__total=0).values_list('platform', 'sub_platform')
出现了子查询:
SELECT `×××`.`platform`, `×××`.`sub_platform`
FROM `×××`
INNER JOIN `×××`
ON ( `×××`.`id` = `×××`.`guid` )
WHERE (`×××`.`total` IS NOT NULL
AND NOT (`×××`.`id` IN (SELECT U1.`guid` AS Col1 FROM `×××` U1 WHERE U1.`total` = 0)))
经过测试发现问题出现在exclude(sub_table__total=0)
从sql的角度我想要的是:
SELECT ×××
.platform
, ×××
.sub_platform
FROM ×××
INNER JOIN ×××
ON ( ×××
.id
= ×××
.guid
)
WHERE ×××
.total
IS NOT NULL
AND ×××
.total
<> 0
请问如何规避。
django支持写sql,你不想用orm就用直接写raw sql呗
https://docs.djangoproject.co...