我正在實施一次性數據導入器,我需要搜索現有的slu。。這些slu are是在一個陣列中。將數組轉換爲OR
查詢的最佳實踐方式是什麼?從迭代實現django 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)
你可以寫這個更pythonic,就像使用一個生成器語句而不是三個創建q_list的代碼行。 – MostafaR
@MostafaR - 查看我的更新 –
Pythonic代碼不是代碼最少的代碼行,並且您的一行代碼沒有足夠的可讀性。但我確信'q_list = [Q(slug = s)for s in slug)]'在你的答案中比'for'語句更可讀。 – MostafaR