0

他のテーブルと結合する複雑なクエリセットを構築しようとしています。ここで私を悩ませているのは、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 によって出力されたものと一致していることを確認しました。

4

0 に答える 0