Django manytomyne与历史变迁的关系场

django-m2m-histor的Python项目详细描述


Django Manytomy历史记录[PYPI版本](https://badge.fury.io/py/django-m2m-history.png)](http://badge.fury.io/py/django-m2m-history)[![构建状态](https://travis-ci.org/ramusus/django-m2m-history.png?branch=master)(https://travis-ci.org/ramusus/django-m2m-history)[![覆盖状态](https://coveralls.io/repos/ramusus/django-m2m-history/badge.png?branch=master)"(https://coveralls.io/r/ramusus/django-m2m-history)


django manytomany relation field with history of changes."与通常的django的manytomanyfield一样,它生成中间连接表
来表示多对多关系,但是有两个额外的列:"time-from"和"time-to"。使用字段的更新接口可以检索该字段值的所有版本的历史记录。


兼容性
----

*python v2.7,v3.4
*django>;=1.5,<;=1.8。**与django 1.9不兼容**
*postgres


——

制作两个具有多对多关系的模型:


class publication(models.model):
title=models.charfield(max_length=30)


def_u str_uu(self):
return self.title

class article(models.model):
headline=models.charfield(最大长度=100)
publications=manytomanyhistoryfield(publication)

def\uu str\uu(self):
return self.headline


创建对象及其之间的关系:

>;p1=publication.objects.create(title='pub1')
>>>p2=发布.对象.创建(title='pub2')
>;>>p3=发布.对象.创建(title='pub3')

>;>文章=文章.对象.创建(title='article1')
>;>状态时间1=datetime.now()

>;>文章.发布s=[p1,p2]
>;>state_time2=article.publications.last_update_time()
>;>article.publications.all()
[<;publication:pub1>;,<;publication:pub2>;]
>;>article.publications.count()
2
>;article.publications.through.objects.count()
2

>;>;article.publications=[p3]
>;>;state_time3=article.publications.last_update_time()
>;>;article.publications.all()
[<;publication:pub3>;]
>;>;article.publications.count()。
1
>;>;文章.出版物.through.objects.count()
3

>;>;文章.出版物.添加(p2,p1)
>;>;状态时间4=文章.出版物.上次更新时间()
>;>;文章.出版物.all()
[<;出版物:出版物1>;,<;出版物:pub2>;,<;出版物:pub3>;]
>;>article.publications.count()
3
>;>article.publications.through.objects.count()
5

>;>article.publications.remove(p2,p1)
>;>;state\u time5=article。出版物。上次更新时间()
>;>article.publications.all()
[<;出版物:出版物3>;]
>;>article.publications.count()
1
>;>article.publications.through.objects.count()

>;article.publications=[p1,p2]
>;>state_time6=article.publications.last_update_time()
>;>article.publications.all()
[<;publication:pub1>;,<;publication:pub2>;]
>;>article.publications.count()
2
>;article.publications.through.objects.count()
7

>>文章.publications.clear()
>;>;state_time7=文章。publications.last_update_time()
>;>;文章。publications.all()
[]
>;>;文章。publications.count()
0
>;>;文章。publications.through.objects.count()
7

按时间戳获取历史状态的对象:

>;>article.publications.was_at(state_time1)
[]

>;>article.publications.was_at(state_time2)
[<;publication:pub1>;,<;publication:pub2>;]

>;>article.publica选项。位于(国家时间3)
[<;出版物:出版物3>;]

>;>文章。出版物。位于(国家时间4)
[<;出版物:出版物1>;,<;出版物:出版物2>;,<;出版物:出版物3>;]


>;>文章。出版物。位于(国家时间5)
[<;publication:pub3>;]

>;>article.publications.was_at(state_time6)
[<;publication:pub1>;,<;publication:pub2>;]

>;>article.publications.was_at(state_time7)
[]


Estamps:

>;>article.publications.added_at(state_time3)
[<;publication:pub3>;]

>;>article.publications.removed_at(state_time3)
[<;publication:pub1>;,<;publication:pub2>;]

>;>article.publications.added_at(国家时间4)
[<;出版物:出版物1>;,<;出版物:出版物2>;]


>;>>文章。出版物。删除了位于(国家时间5)
[<;出版物:出版物1>;,<;出版物:出版物2>;]

>;>文章。出版物。添加了位于(国家时间6)
[<;pub位置:publication:pub1>;,<;出版物:pub2>;]

>;>;文章。出版物。已删除(状态时间6)
[<;出版物:pub3>;]

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

推荐PyPI第三方库


热门话题
java如何生成格式化文件。xml文件?   java向Vaadin布局添加模糊侦听器   Java中的默认构造函数内容   java Eclipse错误:“无法找到jre7的可执行文件”   Java8,如何使用流实现switch语句?   java在CDH4示例上运行map reduce作业   java在servlet中获取文件名   如何禁止在所有浏览器中加载脚本“Selenium Java”   java Play框架和gradle   如果DifferencedName有引号,java无法从组中获取成员   java如何在使用链表实现的堆栈中实现pop操作?   java如何在网络视图中全屏制作YouTube视频?   如何在java中为分配的时间或固定的时间执行循环   java如何使用Android SDK在onCreate语句中动态更改活动的背景颜色?   java如何理解客户端没有来自IBM MQ的消息的原因?   java使用表查找用户最多出现的字母   java中的数组多维数据结构   java如何将一个值设置为一个类中的变量,并从另一个类中获取该变量的值?   java在创建新AVD后无法运行Android应用程序   java使用广度优先搜索算法存储迷宫求解路径