python - 带有字符串变量字段的 Django 过滤器

标签 python django django-models

我想用一个字段过滤模型,但我想将该字段作为字符串变量传递。我该怎么做?

例如:

the_field = 'name'
TheModel.objects.filter(the_field='Gazelle')

我应该用什么替换 the_field?

最佳答案

您可以使用字典解包:

the_field = 'name'
TheModel.objects.filter(**{the_field: 'Gazelle'})

注意字典前面的两个星号 ( ** )。如果您使用 f(**{'a': 4}) 调用函数,则相当于使用 f(a=4) 调用它。

或者您可以使用 Q 对象,并传递一个代表键和值的 2 元组:
from django.db.models import Q
the_field = 'name'
TheModel.objects.filter(Q((the_field, 'Gazelle')))

关于python - 带有字符串变量字段的 Django 过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59177105/

相关文章:

python - 在 Python 中使用 Pandas 组合三个 DataFrame

python - 从 HTML 按钮单击执行 Python/Django 函数

python - 为多对多关系形成、创建和更新 View

python - 如何在 Bluemix 中使用 D'jango 通过 Python 创建项目和应用程序

django - 在 Django 应用程序中重构大型 models.py 文件

django - 仅将 django 模型对象的一个​​条目转换为 json

python - 如何根据django中模型其他字段的状态修改字段渲染行为

Django 代理模型权限不出现

python - Scrapy 多个下一页

Python - 正则表达式 - 搜索模式的一部分在同一行,一部分在下一行