在表单上轻松创建额外的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 查看哈希值)
      
    
    
       关闭
    
      
        
    
    
  
django-easyoptions-0.1.0.tar.gz 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 7cf29e7097f84f8a319624b082d34b4eda19d2ebf80f3315c37eda7e38a5fa28 | |
| MD5 | 048a0fcf7633118d2b41a2098f4d6e3a | |
| BLAKE2b-256 | 00a557f22358c12d1af03d2de004b725e4eeb64e4f3159aa6d1d98586c2d88b3 |