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第三方库


热门话题
JavaGWT:何时使用Lazydemelement?   Java中跟踪消失线程的多线程处理   java Springboot未能配置数据源:“url”,但我没有使用数据库   java为按钮生成随机位置   math Java:包含二项式系数计算的表达式   java通过AsyncTask传递参数   从路径错误创建java文件   高流量网站的性能播放框架、Java、Apache、PostgreSQL、JPA和Hibernate   java将4D矢量转换为长矢量   arraylist Java循环在没有任何错误的情况下终止   java正在制作一个计算器应用程序,希望在第二个片段中更新历史,但无法完成   java将信息从IntentService发送到Activity   java如何在游戏中插入大量实体!工作   javascript如何在ScriptEngineforJava中从数学中获得准确的结果?