在Django本机管理站点中,如果要保存站点上的数据以添加自定义行为,则可以覆盖以下方法:
save_model(self, request, obj, form, change)
在xadmin中,该方法需要重写如下:
save_models(self)
在该方法中,如果需要使用当前正在处理的类对象模型,则需要self.obj获取.
在Django本机管理站点中,如果要删除站点上的数据以添加自定义行为,则可以覆盖以下方法:
delete_model(self, request, obj, form, change)
在xadmin中,该方法需要重写如下:
delete_model(self)
在该方法中,如果需要使用当前正在处理的类对象模型,则需要self.obj获取.
在adminx 里对应的模型下重写save_models() 和delete_model()
class StaffInformation(object):
def save_models(self):
# Save data objects
obj = self.new_obj
obj.save()
do_something() # 自定义动作
# Supplemental custom behavior
# 直接通过obj来调用各个表,进行改写。
obj.ip_address.ip_state = 0 # 在这个Staff表进行保存时,改变另一个表ip_address里的ip_state
obj.port_switch.state = 0 # 在这个Staff表进行保存时,改变另一个表port_switch里的state
obj.ip_address.save() # 改变表ip_address要保存
obj.port_switch.save()
def delete_model(self):
# Delete data objects
obj = self.obj
sku_id = obj.sku.id
do_something() # 自定义动作
# Supplemental custom behavior
obj.ip_address.ip_state = 1
obj.port_switch.state = 1
obj.ip_address.save() # 修改之后保存ip_address
obj.port_switch.save()
obj.delete() # 删除当前表