使用Django中的Model Manager构建复杂的查询集,返回空的查询集

时间:2012-11-02 14:07:55

标签: django

我正在尝试构建一个复杂的查询集,以便与其他表连接。这里让我感到困惑的是,当我打印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及其相同的内容相匹配。

0 个答案:

没有答案