我正在尝试构建一个复杂的查询集,从而与其他表连接。让我感到兴奋的是,当我打印 queryset.query 时能够看到查询,但是当我从代码中调用它时,它没有返回任何结果。
class CarManager(models.Manager):
def get_query_set(self):
return super(CarManager, self).get_query_set().filter(version_to__isnull=True)
def my_cars(self, language, user):
qs=self.extra(
select = {
'make_display' : '`%s`.`%s`' % (ModelLookUpI18n._meta.db_table, ModelLookUpI18n._meta.get_field('make_display').column),
'model_display' : '`%s`.`%s`' % (ModelLookUpI18n._meta.db_table, ModelLookUpI18n._meta.get_field('model_display').column),
'trim_display' : '`%s`.`%s`' % (ModelLookUpI18n._meta.db_table, ModelLookUpI18n._meta.get_field('trim_display').column),
},
tables = [
'`%s`' % ModelLookUpI18n._meta.db_table,
],
where = [
'`%s`.`%s` = `%s`.`%s`' % (ModelLookUpI18n._meta.db_table, ModelLookUpI18n._meta.get_field('model').column, ModelLookup._meta.db_table, ModelLookup._meta.get_field('id').column),
"`%s`.`%s`='%s'" % (ModelLookUpI18n._meta.db_table, ModelLookUpI18n._meta.get_field('language').column, language)
]
).select_related().filter(created_by=user).order_by('-created_at')
print qs.query # prints the SQL statement
print qs # always prints []
return qs
当我复制打印在控制台中的查询并将其粘贴到 mySQL 终端时,我记录了 21 条记录,这对我来说看起来很正常。然而,查询集总是空的,关于如何进一步调试的任何想法?
哦,我什至监视了 MYSQL 执行日志,以确保引擎的内容与 qs.query 打印的内容相匹配,并且相同。