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语句的方法与面向表达式的方法   密码学如何在java中为json对象签名?   是否可以通过java程序知道给定卡夫卡消费群体的消费偏移量?   打印字符时出现java未知问号   java为JFrame设置背景色   在ubuntu中检查java版本时linux权限被拒绝   如何用java创建xml模式   java无法在远程服务器上运行Vaadin应用程序   java智能垃圾收集?   java如何在SpringMVC中设置缓存头?   在unix计算机上运行java应用程序a:>签名以输入内容   Java、Apache Commons配置XML属性   使用ArrayList调用Java未经检查的方法   在文本文件中查找并替换单词(Java GUI)   java Android Studio无法检测到JDK7或更新版本   java从socket的有效负载获取事件消息   安卓中java调用子类方法   java如何通过点击超链接来运行jar文件(Firefox)