设为首页 加入收藏

TOP

django之多对多关系(二)
2015-07-24 10:44:15 来源: 作者: 【 】 浏览:5
Tags:django 关系
ation.objects.all()

[, , ']

>>> a1 = Article.objects.get(pk=1)

>>> a1.publications.all()

[ ]

如果我们删除一个Article,它的Publications将不能访问它:

>>> a2.delete()

>>>Article.objects.all()

[]

>>> p2.article_set.all()

[ ]

通过m2m的另一端进行添加:

>>> a4 = Article(headline='NASA finds intelligent lif on Earth')

>>>a4.save()

>>>p2.article_set.add(a4)

>>> p2.article_set.all()

[]

>>> a4.publications.all()

[]

通过另一端使用关键字添加:

>>> new_article = p2.article_set.create(headline='Oxygen-free diet works wonders')

>>> p2.article_set.all()

[, ]

>>> a5 = p2.article_set.all()[1]

>>> a5.publications.all()

[ ]

从1个Article移除Publication:

>>> a4.publications.remove(p2)

>>> p2.article_set.all()

[]

>>> a4.publications.all()

[ ]

而从另一端:

>>> p2.article_set.remove(a5)

>>>p2.article_set.all()

[ ]

>>> a5.publications.all()

[ ]

可以赋值关系集。赋值操作清除任何存在的集合成员:

>>> a4.publications.all()

[]

>>> a4.publications = [p3]

>>> a4.publications.all()

[]

关系集可以清除:

>>> p2.article_set.clear()

>>> p2.article_set.all()

[ ]

也可以从另一端做清除:

>>> p2.article_set.add(a4, a5)

>>> p2.article_set.all()

[, ]

>>> a4.publications.clear()

>>> a4.publications.all()

[ ]

>>> p2.article_set.all()

[ ]

重新创建我们删除的Article和Publications:

>>> p1 = Publication(title='The Python Journal')

>>> p1.save()

>>> a2 = Article(headline='NASA uses Python')

>>> a2.save()

>>> a2.publications.add(p1, p2, p3)

批量删除一些Publications - 引用删除的publications也被删除:

>>> Publication.objects.filter(title__startwith='Science').delete()

>>> Publication.objects.all()

[, ]

>>> Article.objects.all()

[, .... ]

>>> a2.publications.all()

[]

批量删除一些article - 引用删除的对象也被删除:

>>> q = Article.objects.filter(headline__startwith='Django')

>>> print(q)

[]

>>> q.delete()

在delete()调用后,QeruySet缓存需要清除,而且音乐的对象也会删掉:

>>> print(q)

[ ]

>>> p1.article_set.all()

[]

调用clear()的替代方法是赋值空集:

>>> p1.article_set = []

>>> p1.article_set.all()

>>> a2.publications = [p1, new_publication]

>>> a2.publications.all()

[, ]

>>> a2.publications = [ ]

>>> a2.publications.all()

[ ]

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇数学之路-SPSS备忘(1) 下一篇每隔一段时间,hbase的读就会停顿..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++ Lambda表达式保 (2025-12-26 05:49:45)
·C++ Lambda表达式的 (2025-12-26 05:49:42)
·深入浅出 C++ Lambda (2025-12-26 05:49:40)
·C语言指针从入门到基 (2025-12-26 05:21:36)
·【C语言指针初阶】C (2025-12-26 05:21:33)