Django中RawQuerySets和QuerySets的并集和交集

1 投票
1 回答
1076 浏览
提问于 2025-04-18 13:59

有没有办法把一个 RawQuerySet 转换成 QuerySet,或者模仿 QuerySet__and____or__ 方法,让我可以得到一个 RawQuerySet 和一个 QuerySet 的并集和交集呢?

1 个回答

1

这个 链接 对我帮助很大。

完整代码片段:

from django.db import connection, models

class MyManager(Manager):
    def raw_as_qs(self, raw_query, params=()):
        """Execute a raw query and return a QuerySet.  The first column in the
        result set must be the id field for the model.
        :type raw_query: str | unicode
        :type params: tuple[T] | dict[str | unicode, T]
        :rtype: django.db.models.query.QuerySet
        """
        cursor = connection.cursor()
        try:
            cursor.execute(raw_query, params)
            return self.filter(id__in=(x[0] for x in cursor))
        finally:
            cursor.close()


class MyModel(models.Model):
    objects = MyManager()

撰写回答