跳转到主要内容

在表单上轻松创建额外的Meta选项类

项目描述

轻松为您的Django表单、模型等添加更多类似Meta的选项类。

安装

使用pip安装

pip install django-easyoptions

它适用于Django 1.4及更高版本。

使用

要使用类中的选项,请定义一个选项类,并使用提供的元类生成器之一。

from django import forms
from django.utils import six
from easyoption.options import OptionsBase, form_option_factory


# Define your ``Option``\s container class
class ExtendedOptions(OptionsBase):
    def __init__(self, options):

        # Collect your options, supplying defaults as appropriate
        self.foo = options.pop('foo', None)
        self.frobnicate = options.pop('frobnicate', True)

        # Call the ``super().__init__()``, which ensures all options are
        # consumed.
        super(ExtraOption, self).__init__(options)


# Define your base class, using the options from ``_extendedoptions``
class ExtendedForm(six.with_metaclass(
        form_option_factory(ExtendedOptions),
        forms.Form)):

    def __init__(self, **kwargs):
        super(ExtendedForm, self).__init__(**kwargs)

        if self._extendedoptions.frobnicate:
            self.bar(self._extendedoptions.foo)


# Extend your base class, and define the ``ExtendedOptions`` for options
# for this specific implementation
class SpecificExtendedForm(ExtendedForm):
    class ExtendedOptions:
        foo = 'quux'

方法

options.options_factory

执行所有工作的主要方法是options.options_factory。它生成一个新的元类,您应该将其应用于基类,以便子类可以定义自己的选项。此方法接受四个参数

options_processor

一个可调用对象,用于处理类的选项字典中的选项。这通常是一个继承自options.OptionsBase的类子类,但可以是任何可调用对象,只要它返回某种选项结构。

options_class_name

可以找到选项定义的类的属性名。

默认为options_processor.__name__,这对于类来说效果很好。

options_attr_name

存储处理后的选项的属性名。

默认为'_' + options_class_name.lower()

metaclass

要扩展的基本元类。

默认为type

options.form_options_factory

使用已设置为Django表单的元类的metaclass调用options.options_factory

options.modelform_options_factory

调用 options.options_factory,并将 metaclass 设置为 Django 模型表单的元类。

项目详情


下载文件

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

源代码分发

django-easyoptions-0.1.0.tar.gz (3.8 kB 查看哈希值)

上传时间 源代码

由以下组织支持