python - django 使用 fieldname__contains 时如何使字段名成为变量?
问题描述
query_dict = {'server_name': 'mysql', 'type': linux}
class ServerInfo(db.models):
server_name = models.CharField(max_length=255)
type = models.CharField(max_length=20)
from django.db.models import Q
q = Q()
for k, v in query_dict.items():
q.add(Q(k__icontains=v), Q.AND)
这行不通,我怎么能用上面 k 之类的变量替换字段名称?
我的英语不好,对不起。
解决方案
您可以使用 and 构建字典,key__contains
并使用语法value
将内容解包到Q
对象调用中。**
IE,
>>> for k, v in query_dict.items():
... kwargs = {f'{k}_contains': v} # or use kwargs = {'%s_contains' % k: v} if the python version less than 3.6
... q.add(Q(**kwargs), Q.AND)
推荐阅读
- python - Django 管理站点未加载 CSS
- ansible - Jinja 转义评论标签的开头
- c# - 在同一个 HTTP 请求中混合异步和同步 ASP.NET Core C#
- javascript - Python 请求在验证码后面登录网站
- ios - 您的 Apple ID Fastlane 权限不足
- javascript - 读取 JSON 数据的函数未传递给变量
- python - 如何在选择语句中使用值列表/数组作为列名?
- sql - 为什么 GROUP BY 的 BigQuery COUNT(*) 不正确?
- python - 如何抑制过时的点子警告
- c++ - 如何使用 bellman-ford 算法返回所有具有捆绑权重的最短路径?