如何在Django查询中动态提供查找字段名? [英] How to dynamically provide lookup field name in Django query?

查看:500
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆