天天看點

Django 關聯管理器

"關聯管理器"是在一對多或者多對多的關聯上下文中使用的管理器。它存在于下面兩種情況:

ForeignKey關系的“另一邊”。像這樣:

在上面的例子中,管理器reporter.article_set擁有下面的方法。

ManyToManyField關系的兩邊:

這個例子中,topping.pizza_set 和pizza.toppings都擁有下面的方法。

add(obj1[, obj2, ...])

create(**kwargs)

remove(obj1[, obj2, ...])

clear()

set()方法

先清空,在設定,編輯書籍時即可用到

Django 關聯管理器

注意

對于所有類型的關聯字段,add()、create()、remove()和clear(),set()都會馬上更新資料庫。換句話說,在關聯的任何一端,都不需要再調用save()方法。

直接指派:

通過指派一個新的可疊代的對象,關聯對象集可以被整體替換掉。

>>> new_list = [obj1, obj2, obj3]

>>> e.related_set = new_list

如果外鍵關系滿足null=True,關聯管理器會在添加new_list中的内容之前,首先調用clear()方法來解除關聯集中一切已存在對象的關聯。否則, new_list中的對象會在已存在的關聯的基礎上被添加。  

繼續閱讀