用于分叉、重置和扩散模型对象的实用函数

django-forkit的Python项目详细描述


概述django forkit由一组用于forking、resetting和diffing模型对象的实用函数组成。下面是当前
实用程序函数的列表:

----
创建并返回一个与"reference"相同的新对象。

-`fields`-要fork的字段列表。如果值为falsy,则字段
将根据"deep"的值进行推断。
-`exclude`-不分叉的字段列表(如果定义了"fields`
,则不适用)
-`deep`-如果为"true`",则遍历所有相关对象并创建其中的分叉
,从而有效地创建一个新的对象树。
-``commit`-如果``true`,所有fork(包括相关对象)将按依赖顺序保存。如果"false",则在提交根分叉之前,所有提交都会被隐藏起来。
-``**kwargs`-任何其他关键字参数都会传递给所有信号
接收器。用于更改信号接收器中的运行时行为。

``python
fork(reference,[fields=none],[exclude=('pk',)],[deep=false],[commit=true],[**kwargs])
````

----
与上述参数相同,只是显式的``instance``i要求和
将导致"instance"的就地更新。对于浅重置,只更新
本地非关系字段。对于深度重置,将遍历并重置外键。_不尝试重置多对多和反向外键,因为"reference"的相关对象
与"instance"的相关对象之间的比较变得不明确。重置(reference,instance,[fields=none],[exclude=('pk',),[deep=false],[commit=true],[**kwargs])
```

---------
将任何未保存的更改提交到分叉或重置对象。

``python
``commit(reference,[**kwargs])
```

forkit.tools.diff
---------
在两个对象之间执行一个差异为同一类型的对象建模。输出是相对于"reference"的不同值的
"dict"。因此,如果
``reference.foo``是``bar``而``instance.foo``是``baz``,则输出将
_注意:深度差异仅适用于简单的非循环关系。改进后的功能计划在将来的版本中发布。diff(reference,instance,[fields=none],[exclude=('pk',),[deep=false],[kwargs])
````

forkablemodel
----
还包括一个实现上述功能的"model"子类。
作为方法。

``python
from forkit.models导入forkablemodel

first-name=models.charfield(max-length=30)
last-name=models.charfield(max-length=30)
```

=author(名字是byron,姓氏是ruth')
author.save()
```

/>``` python
作者fork.first_name_byron
作者fork.last_name_ruth
````

让我们更改fork上的某些内容,并使用"diff"方法将其与原始的"author"进行比较。它返回自身与传入对象之间的差异的字典。

``python
author\first\u name='edward'
author\fork.diff(author){{first\u name':'edward'}
````

a uthor_fork.commit()
``

signals
===
对于上面的每个实用函数,``pre_foo``和``post_foo`` signals
都会发送,以允许解上载ed用于自定义行为,特别是在执行深层操作时。


forkit.signals.pre_-fork
-

-``sender`-实例的模型类
-``reference`-创建fork的引用对象``-fork对象本身是传递给forkit.tools.fork`


forkit.signals.post_fork
-
-`sender`-实例的模型类ed from
-``instance`-分叉对象本身


forkit.signals.pre廑reset
----

-``sender`-实例的模型类
-``reference`-实例相对于
-``instance`-被重置的对象
-``config``-a``dict``传入``forkit.tools.reset``


forkit.signals.post\reset
-

-``sender``-实例的模型类
-``reference`-实例相对于
重置的引用对象-``实例``-要重置的对象

----

-``sender`-实例的模型类
-``reference`-已派生实例的引用对象
-``instance`-要提交的对象

=--

-``sender`-实例的模型类
-``reference`-实例派生的引用对象
-``instance`-已提交的对象


forkit.signals.pre_diff
--

-`` sender`-实例的模型类
-``reference`-实例与实例不同的引用对象
-``instance`-对象与传递到'forkit.tools.diff`


forkit.signals.post diff-``config`-a``dict``不同r/>——

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用从PreparedStatement返回的RowId。getGeneratedKeys()?   selenium chrome驱动程序中下一个网站url的java空白页   java如何将参数化匿名类转换为lambda?   java JUnit在AfterClass上获取测试结果   java将动态XML/JSON内容与静态标记化负载进行比较,并检索标记值   java共享一个需要数据持久性的项目[数据库]   java在调用方法时获取意外的参数类型。getParameterTypes()   java如何用jdbc在swing中用另一个字段替换外键?   需要java Jersey Tomcat CDI依赖项解释   java如何生成UML图   java如何编写Jersey rest服务可以通过给定的spring代码访问   SpringMaven存储库管理器Nexus与Java依赖项的Artifactory   java将包从另一个项目导入eclipse中的当前项目   加密Java使用密码加密文件