python 3的脏模型
dirty-models的Python项目详细描述
脏型号
python 3的脏模型
功能
- python 3包。
- 易于创建模型。
- 非破坏性修改。
- 非假阳性修改。
- 能够恢复每个字段或整个模型的原始数据。
- 获取原始数据。
- 只读字段。
- 字段的别名。
- 每个字段的自定义getter和setter。
- 自动转换值。
- 轻松从dict导入/导出到dict。
- 基本字段类型已实现。
- 多类型字段。
- 每个字段或整个模型的默认值。
- 哈希映射模型。它可以代替dynamicmodel使用。
- 快速动态模型。它可以用来代替dynamicmodel。同样的行为,更好的表现。
- 可挑选的型号。
- 日期时间字段可以使用任何日期时间格式(使用解析器和格式化程序函数)。
- 没有数据库Dependent.
- 使用脏模型sphinx扩展名的自动文档
- JSON编码器。
- 字段访问与字典类似,但使用通配符。
- 开源(bsd许可证)
更改日志
版本0.11.3
- 修正铸造管柱负浮子的缺陷。
- 修复将无效值转换为枚举的异常。
- 将 标题 属性添加到字段。
- 向字段添加了元数据属性。它可以用来储存任何东西。
- 改进的模型格式化程序。
版本0.11.2
修复错误107。
添加了 ~ dirty\u models.utils.modelIterator类,以便能够在模型字段上迭代。
fromdirty_models.utilsimportModelIteratorforfieldname,field_obj,valueinModelIterator(my_model):print('Field name: {}'.format(fieldname))print('Field alias: {}'.format(field_obj.alias))print('Field value: {}'.format(value))
关于只读数据的一些修复。
版本0.11.1
- 分发修复。
版本0.11.0
- 新字段类型 ~脏模型.fields.bytesfield
- 字符串到整数转换可以使用python允许的任何格式:hex( 0x23 )、oct( 0o43 )或 无下划线( 1嫀232 ,仅在Python 3.6之后)。
版本0.10.1
工厂<;脏嫒型号。实用程序>; 功能。它允许将工厂定义为 每次实例化模型时要执行的默认值。(第100期)
fromdirty_models.utilsimportfactoryfromdatetimeimportdatetimeclassModel(BaseModel):field_1=DateTimeField(default=factory(datetime.now))model=Model()print(model.field_1)# 2017-11-02 21:52:46.339040
生成文件修复。
python 3.6正式支持。它从第一天起就开始工作,但现在测试在TravisforPython3.6上运行。
版本0.10.0
- 可选择的列表。
- 改善泡菜性能。
- 将"无"设置为"删除内容"字段。
- 更多测试。
- 一些代码改进。
版本0.9.2
- 将时间戳转换为日期时间时修复时区。
版本0.9.1
- 修复安装。
版本0.9.0
- 新的枚举字段。
- 修复setup.py.
- 确定需求。
- 修正格式化程序iter。
- 修复代码。
- 在主程序包文件中添加了 \u版本 。
- 主打包文件、setup.py和docs之间的同步版本。
- 仅导出修改。
版本0.8.1
- 已将包含函数的函数添加到模型和列表中。它允许在操作员中使用 。
- 将默认时区参数添加到datetimefields和timefields。如果输入的值没有时区 已定义,将设置默认值。
- 将 强制时区 参数添加到datetimefields,以便将值转换为特定时区。
- 更多清理工作。
版本0.8.0
- 重命名的内部字段。现在他们使用双倍分数格式
- 如果模型中的两个字段使用相同的别名,则引发运行时错误异常。
- 修复了默认文档字符串。
- 清除默认数据。只允许实名字段用作键。
- 添加了 ~脏模型。模型。基本模型。按路径获取属性 ,以便使用路径获取所有值。
- 添加了 ~脏模型。模型。基本模型。按路径获取第一个属性 ,以便使用路径获取第一个值。
- 添加了访问字段的选项,如在字典中,但使用通配符。只为消息灵通的人。 请参见: ~脏模型。模型。基本模型。按路径获取第一属性
- 添加了一些文档。
版本0.7.2
- 固定继承结构 <广告>ded 获取默认数据 方法到模型,以便检索默认数据。
版本0.7.1
- 格式化动态模型的问题已解决
- 向动态模型添加日期、时间和时间增量字段。
版本0.7.0
- 时间增量字段
- 通用格式化程序
- JSON编码器
importjsonfromdatetimeimportdatetimefromdirty_modelsimportBaseModel,DatetimeFieldfromdirty_models.utilsimportJSONEncoderclassExampleModel(BaseModel):field_datetime=DatetimeField(parse_format="%Y-%m-%dT%H:%M:%S")model=ExampleModel(field_datetime=datetime.now())assertjson.dumps(model,cls=JSONEncoder)=='{"field_datetime": "2016-05-30T22:22:22"}'
- auto camelcase fields元类
版本0.6.3
- 文档已修复。
- 允许从根包导入主要成员。
版本0.6.2
- 改进了日期时间字段解析器和格式化程序定义。现在有三种定义方法:
- 格式化字符串以同时使用parse和formatter:
classExampleModel(BaseModel):datetime_field=DateTimeField(parse_format='%Y-%m-%dT%H:%M:%SZ')
- 定义用于分析和格式化日期时间的格式字符串或函数:
classExampleModel(BaseModel):datetime_field=DateTimeField(parse_format={'parser':callable_func,'formatter':'%Y-%m-%dT%H:%M:%SZ'})
- 使用预定义格式:
DateTimeField.date_parsers={'iso8061':{'formatter':'%Y-%m-%dT%H:%M:%SZ','parser':iso8601.parse_date}}classExampleModel(BaseModel):datetime_field=DateTimeField(parse_format='iso8061')
版本0.6.1
- 改进的模型字段自动参考。
classExampleModel(BaseModel):model_field=ModelField()# Field with a ExampleModelarray_of_model=ArrayField(field_type=ModelField())# Array of ExampleModels
版本0.6.0
- 添加字段的默认值。
classExampleModel(BaseModel):integer_field=IntegerField(default=1)model=ExampleModel()assertmodel.integer_fieldis1
- 在模型级别添加了默认值。继承默认值可以在新模型类上重写。
classInheritExampleModel(ExampleModel):__default_data__={'integer_field':2}model=InheritExampleModel()assertmodel.integer_fieldis2
- 添加了多类型字段。
fromdirty_models.utilsimportModelIteratorforfieldname,field_obj,valueinModelIterator(my_model):print('Field name: {}'.format(fieldname))print('Field alias: {}'.format(field_obj.alias))print('Field value: {}'.format(value))0
版本0.5.2
- 固定模型结构。
- 生成文件帮助程序。
版本0.5.1
- 添加了获取模型结构的简单方法。它将被autodoc库用作sphinx或json模式。
版本0.5.0
- 向arrayfield添加了autolist参数。它允许将单个项分配给列表字段, 因此它将被转换为具有此值的列表。
fromdirty_models.utilsimportModelIteratorforfieldname,field_obj,valueinModelIterator(my_model):print('Field name: {}'.format(fieldname))print('Field alias: {}'.format(field_obj.alias))print('Field value: {}'.format(value))1
安装
fromdirty_models.utilsimportModelIteratorforfieldname,field_obj,valueinModelIterator(my_model):print('Field name: {}'.format(fieldname))print('Field alias: {}'.format(field_obj.alias))print('Field value: {}'.format(value))2
问题
- getter和setter特性需要重构才能用作装饰器。
- 动态模型太奇怪了。我不相信。尝试使用HashMapModel或FastDynamicModel。
基本用法
fromdirty_models.utilsimportModelIteratorforfieldname,field_obj,valueinModelIterator(my_model):print('Field name: {}'.format(fieldname))print('Field alias: {}'.format(field_obj.alias))print('Field value: {}'.format(value))3 < div > 注
关于http://dirty-models.readthedocs.io/" rel="nofollow">http://dirty models.readthedocs.io/
的更多示例和文档