当前位置: 首页 > 工具软件 > django-xadmin > 使用案例 >

django-xadmin 重写save_models 和 delete_model

濮阳祯
2023-12-01

save_models

在Django本机管理站点中,如果要保存站点上的数据以添加自定义行为,则可以覆盖以下方法:

save_model(self, request, obj, form, change)

在xadmin中,该方法需要重写如下:

save_models(self)

在该方法中,如果需要使用当前正在处理的类对象模型,则需要self.obj获取.

delete_model

在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() # 删除当前表
 类似资料: