首页 > 解决方案 > Django:存储 Q 查询对象以进行可重复搜索?

问题描述

在我基于 Django 的网络应用程序中,用户可以执行搜索;查询由几个动态构造的复杂 Q 对象组成。

根据用户搜索参数,搜索将查询可变数量的列,并且还可以扩展到多个模型。

用户应该能够保存她的搜索以在以后重复它。

为此,我想将 Q 对象(我猜)存储在数据库表中。

这是好习惯吗?你会如何处理这个问题?

提前致谢。

标签: pythondjango

解决方案


如果您只有一个或固定数量的Q对象作为过滤器的一部分,则可以将传递给的参数保存Q为 dict。

.eg 这个:

Q(buy_book__entity__type=ENTITY.INTERNAL)

相当于这个:

q_filter = {"buy_book__entity__type": ENTITY.INTERNAL}
Q(**q_filter)

您可以保存q_filter在数据存储中。


推荐阅读