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()
[ ]