postgresql 反思Django查询集字段查找

f4t66c6m  于 2023-02-18  发布在  PostgreSQL
关注(0)|答案(1)|浏览(135)

我正在Django中构建一个类似于问题 Jmeter 板的查询构建器,它允许用户查询和保存数据库中问题的自定义子集的 Jmeter 板(例如,分配给团队A的、由客户端X创建的、以及在当前季度中创建或更新的所有问题)。前端将允许用户与问题API交互以生成他们正在寻找的问题的列表,并保存筛选条件,以便他们可以访问页面并查看与筛选条件匹配的问题的更新列表。
我正在考虑将过滤条件保存为JSONField中的字典,并将其传递给Model.objects.filterQAPI。
我想为前端提供所有符合条件的字段查找列表(例如,exactiexactcontainsicontainsingt等)。是否有一个类可以让我通过编程获得这些查找的列表?
我通读了Field Lookup文档,并尝试查看Django source code,但无法找到类似于Model._meta.get_fields()的东西来内省模型上的字段,如Model _ metaAPI文档中所列。

wko9yo5t

wko9yo5t1#

你好像在找这个?

from django.db.models.fields  import Field
f = Field()
f.get_lookups()
{'exact': <class 'django.db.models.lookups.Exact'>, 'iexact': <class 'django.db.models.lookups.IExact'>, 'gt': <class 'django.db.models.lookups.GreaterThan'>, 'gte': <class 'django.db.models.lookups.GreaterThanOrEqual'>, 'lt': <class 'django.db.models.lookups.LessThan'>, 'lte': <class 'django.db.models.lookups.LessThanOrEqual'>, 'in': <class 'django.db.models.lookups.In'>, 'contains': <class 'django.db.models.lookups.Contains'>, 'icontains': <class 'django.db.models.lookups.IContains'>, 'startswith': <class 'django.db.models.lookups.StartsWith'>, 'istartswith': <class 'django.db.models.lookups.IStartsWith'>, 'endswith': <class 'django.db.models.lookups.EndsWith'>, 'iendswith': <class 'django.db.models.lookups.IEndsWith'>, 'range': <class 'django.db.models.lookups.Range'>, 'isnull': <class 'django.db.models.lookups.IsNull'>, 'regex': <class 'django.db.models.lookups.Regex'>, 'iregex': <class 'django.db.models.lookups.IRegex'>}

源代码:www.example.com-检查整个文件。https://github.com/django/django/blob/bae053d497ba8a8de7e4f725973924bfb1885fd2/django/db/models/lookups.py#L361 - check the whole file.
如果你只想要一个静态列表,还有更老的提交可能会有帮助:www.example.com,但此版本不再可用于导入。https://github.com/django/django/blob/d4e578d0f64971483ded49f9cae460ea174b5138/django/db/models/sql/constants.py#L11 but this one is not available for importing anymore.

相关问题