Django中RawQuerySets和QuerySets的并集和交集
有没有办法把一个 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()