Dust8 的博客

读书百遍其义自见

0%

django之save_model

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
def save_model(self, request, obj, form, change):
# form.initial 表单里面的初始值保存着原来的数据, cleaned_data 里面就是更改后的数据
# 新增获取不到,要给个默认值
user_info = form.initial.get("user_info",None)
try:
user_instance = obj.user_classmets
# 这是保存改动
super().save_model(request, obj, form, change)
# 特殊的目的,因为需要保存后才能处理
xxx(user_instance)
except Exception as ex:
# 这里在外键后面直接加_id,来设置数字,不然必须是实例
# 出错了还原数据
obj.user_info_id = user_info
obj.save()
# 只发送错误信息, 更改的信息不显示, 不然会叠加显示2条信息,导致错误信息被遮罩
messages.error(request, f"{ex}")
messages.set_level(request, messages.ERROR)

参考链接