基于django延迟模型的多态模型
django_deferred_polymorph的Python项目详细描述
关于
django_deferred_polymorp是django多态模型的一个实现。与其他解决方案一样,您只需从数据库中获取基本实例并获得正确的子类。这意味着您始终可以依赖于拥有您的子类将提供的所有数据/方法。
与其他解决方案不同的是,附加数据是通过使用Django自己的延迟机制的稍微修改版本加载的。这样,获取基类只会发出一个sql查询,返回子类和所有附加数据作为延迟字段。如果试图访问某个延迟字段,则会加载所有延迟字段(与django的默认延迟字段不同)。
django_deferred_polymorf包含两个抽象基模型:
- DeferredPolymorphBaseModel as the base for every deferred model
- SubDeferredPolymorphBaseModel which extends DeferredPolymorphBaseModel to force userd to use a subclass
安装
第一个:
pip install django_deferred_polymorph
然后将'django_deferred_polymorph'添加到INSTALLED_APPS设置中。
运行测试
首先创建一个virtualenv,然后在virtualenv和 使用以下命令添加测试依赖项:
python setup.py develop pip install -r requirements.txt
现在您可以对当前安装的 django与:
python runtests.py
但是我们支持django和python的多个版本。全部测试 立即使用以下命令进行相关组合:
tox
更改日志
0.4.0
- 重新使用已注册的应用程序,以便对象删除生效
- 与django<;1.7的兼容性降低
0.3.2
- 修正了django 1.8中未正确设置_base_manager的 DeferredPolymorphBaseModel的子类。打破了 Model.delete()方法在某些情况下。
0.3.1
- 添加manifest.in文件以定义源中包含的文件 分配。其中缺少changes.rst,并在 安装。
0.3.0
- 放弃对django 1.5.x和更低版本的支持,因为我们必须熟练地使用django的 管理器中get_queryset而不是get_query_set的命名方案。
- 修正了django 1.8,它在meta中使用unicode作为模型名。 目标用type()中断了动态类的创建。
0.2.0
- Django 1.8支持。