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

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数据未插入SQLite数据库   Java中内存有效的对象创建   java在方法内部使用“this”(不用于调用方法、构造函数或变量)   java为什么这里会出现NullPointerException?   在REST中使用HATEOAS导致的java循环依赖   java如何定制spring boot横幅?   Java数字基数计算器(即基数10到基数5)   如果在Kotlin vs Java中声明,用作全局上下文的安卓 MainApplication类将崩溃   用于过滤对象的Java lambda函数   java从字符串数组中获取整数列表   java为什么Maven找不到org。json JPMS自动模块?   java将字符串数组转换为int   仅当与阈值字节匹配时,java才会在映射中填充字符串值