如何将字符串转换为django.db.models.query_utils.Q格式?

时间:2017-01-28 09:26:03

标签: python django django-models django-queryset django-1.4

对于搜索功能,我想将django查询保存到数据库&稍后执行它。我已将查询保存在一个表(公司,其中包含id,qryText)中,如下所示。 django查询保存为字符串。

q = Company.objects.get(id=1)
Car.objects.filter(q.qryText)

我无法像

那样执行它
this.user = Object.assign({}, currentObject);

q.qryText 是不是 django.db.models.query_utils.Q 格式的字符串。 我怎么能执行这个字符串查询?

1 个答案:

答案 0 :(得分:1)

查询的字符串表示不容易(安全)可逆,所以我会尝试不同类型的编码。例如,改为使用pickle库。

编码:

import pickle
from django.db.models import query_utils

q = Q(code__in=[10, 11, 12], color_in=[1, 2, 3])
q_pickled = pickle.dumps(q)

再次解码:

# Assuming that q_pickled is available and is a valid pickled string
import pickle

q = pickle.loads(q_pickled)