在Django中,如何使用动态字段查找过滤QuerySet?

布莱恩·亨特:

给定一个班级:

from django.db import models

class Person(models.Model):
    name = models.CharField(max_length=20)

是否有可能(如果有的话)拥有一个基于动态参数进行过滤的QuerySet?例如:

 # Instead of:
 Person.objects.filter(name__startswith='B')
 # ... and:
 Person.objects.filter(name__endswith='B')

 # ... is there some way, given:
 filter_by = '{0}__{1}'.format('name', 'startswith')
 filter_value = 'B'

 # ... that you can run the equivalent of this?
 Person.objects.filter(filter_by=filter_value)
 # ... which will throw an exception, since `filter_by` is not
 # an attribute of `Person`.
丹尼尔·纳布(Daniel Naab):

Python的参数扩展可用于解决此问题:

kwargs = {
    '{0}__{1}'.format('name', 'startswith'): 'A',
    '{0}__{1}'.format('name', 'endswith'): 'Z'
}

Person.objects.filter(**kwargs)

这是一个非常常见且有用的Python习惯用法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Django中使用动态字段过滤器生成报告

如何在Django queryset过滤中执行不等于?

如何使用其序数值从DLL查找过程?

如何创建比较同一模型中两个日期字段的Django queryset过滤器

如何在其他字段上过滤Django Queryset?

用jq查找过滤

如何使用PyMongo在PythonEve中使用查找过滤器对结果进行排序

查找过滤后的组合集的算法

如何使用CreateView在表单字段之一中过滤queryset值?

如何在$ nin中使用动态值从mongo中的查找中过滤元素

如何在Django中动态过滤字段名称,条件和值

Django,queryset在多方字段中查找计数

猫鼬通过附件查找过滤

检查is_null以获取Django queryset过滤中的字段列表

如何过滤Django QuerySet的相关字段“全部”或“无”

如何在Android Studio 1.0中查找过滤器Logcat配置?

Django中的动态过滤器选择字段

Django使用字段值查找过滤查询集

如何在Django中使用queryset值为filter的字段过滤模型的实例?

如何使用与(动态)列表相比的关系字段筛选QuerySet

如何使用proc中的代码查找过程?

如何过滤不等于Django中的queryset?

Python Eve - 使用经过身份验证的用户信息的动态查找过滤器

如何通过同一字段的两次查找过滤查询集?

DRF 如何返回通过使用自定义路由器和模型视图集查找过滤的列表

Django QuerySet 过滤——在字段查找中与子句相交?

如何使用 bigquery 和 power bi 中的平台、steam_id、event_name 过滤器编写查询以查找过去 28 天内的 firebase 事件详细信息?

如何过滤django中的外键字段?

如何在 django-filter 中的多个字段上使用一个查找字段过滤查询集