跳转到主要内容

可以声明性地定义字段查询集过滤器的表单

项目描述

安装

在您的虚拟环境中,使用 pip install django-filteredform

您不需要将其安装到 settings.INSTALLED_APPS 中,因为它不提供任何模型或模板,只提供表单。

用法

在django模型表单的字段上声明性地定义过滤器的用法

from django import forms
from people.models import Person
from filtered_form.forms import FilteringForm

class PersonAdminForm(FilteringForm):
    class Meta:
        model = Person

    instance_filters = {
        'units': 'company.units'
    }
    filters = {
        'units': models.Q(is_active=True),
        'colours__in': ['red','blue','green']
    }

实例过滤器

instance_filters 允许应用关系过滤器。

例如,如果您有三个模型,分别是 PersonUnitCompany,并且每个人和单位都有一个外键指向公司,您可以使用实例过滤器轻松地选择查看人员时仅关联公司的单位。

或者,您还可以提供一个不需要参数的查询集方法(方法),以进行更多过滤

instance_filters = {
    'units': 'company.units.active'
}

普通过滤器

更传统的过滤器结构,允许您提供一个 Q 对象,或键值对的字典,该字典将被传递到查询集的 .filter() 上。

如果您的过滤器键不是该查询集过滤器函数的有效参数,您可能会很容易地弄巧成拙。

表单集

您可以使用此方法创建表单,并将其传递给表单集类或工厂。或者,您可以使用基于 filtered_form.forms.FilteredFormSet 的表单集类,这将正确设置空表单的查询集值,这对于使用动态表单非常有用。

版本历史

1.0.3

修复了一个bug,在django admin中无法创建新对象。

1.0.1

改进文档。

允许在 instance_filter 的值中使用可调用对象。

允许在 filter 的值中使用字典。

1.0

初始发布。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪一个,请了解更多关于 安装包 的信息。

源代码分发

django-filtered-form-1.0.3.tar.gz (3.1 kB 查看哈希值)

上传时间 源代码

支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面