基本操作
from .model import *
1 # 增、删、改
2 add() # 增加
3 remove() # 删除表,只删一条数据
4 clear() # 清空表, 把所有关系的表全部清空 例如 book_obj.author.clear() 表示把当前书籍的所有作者全部清空
drf中应用
def save(self, **kwargs):
data = super().save(**kwargs)
data.dept.set(self.initial_data.get('dept', []))
data.menu.set(self.initial_data.get('menu', []))
data.permission.set(self.initial_data.get('permission', []))
return data
访问初始数据和实例(上述代码中的initial_data)
将初始化对象或者查询集传递给序列化实例时,可以通过.instance访问。如果没有传递初始化对象,那么.instance属性将是None。
将数据传递给序列化器实例时,未修改的数据可以通过.initial_data获取。如果没有传递data关键字参数,那么.initial_data属性就不存在。
def create(self, validated_data):
if "password" in validated_data.keys() and validated_data['password']:
validated_data['password'] = make_password(validated_data['password'])
roles = validated_data.pop('role')
user = super().create(validated_data)
user.role.add(*roles)
return user
此处将role从validated_data中pop出去,然后用多对多方式添加。