如何在Django查询中动态提供查找字段名? [英] How to dynamically provide lookup field name in Django query?
本文介绍了如何在Django查询中动态提供查找字段名?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我想在Django中的Model的几个字段中查找某个字符串。理想情况下,它将会类似于:
I want to look for a certain string in several fields of a Model in Django. Ideally, it would go something similar to:
keyword = 'keyword'
fields = ['foo', 'bar', 'baz']
results = []
for field in fields:
lookup = "%s__contains"
results.append(Item.objects.filter(lookup=keyword))
当然这不行,因为查找无法解析成一个领域有没有办法这样做?
Of course this won't work, as "lookup" can't be resolved into a field. Is there any other way to do this?
推荐答案
我认为可能有一个更好的方式来做到这一点与Django查询系统。以下是如何做到这一点。
I think there may be a better way to do this with the Django query system. Here's how to do it your way.
Python允许您通过将其作为参数列表使用**作为参数列表。
有一个运气的地方,你应该能够这样做:
Python allows you to pass dictionaries to be used as argument lists by prefixing them with **. With a spot of luck, you should be able to do something like this:
lookup = "%s__contains" % field
results.append(Item.objects.filter(**{ lookup: keyword}))
这篇关于如何在Django查询中动态提供查找字段名?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文