我正在实现一个一次性数据导入程序,需要搜索已存在的slug。这些slug存储在一个数组中。转换数组为OR
查询的最佳实践方式是什么?
我想到了以下解决方案,它能够正常工作,但感觉用了太多代码来完成这么简单的事情。
# slug might be an array or just a string
# ex:
slug = [ "snakes", "snake-s" ] # in the real world this is generated from directory structure on disk
# build the query
query = MyModel.objects
if hasattr(slug, "__iter__"):
q = Q()
for s in slug:
q = q.__or__(Q(slug=s))
query = query.filter(q)
else:
query = query.filter(slug=slug)
q_list = [Q(slug=s) for s in slug]
比你回答中的for
语句更易读。 - MostafaR