当前位置: 首页 > 后端技术 > Python

小插曲1:django+xadmin说说模型的save_models(增改数据)

时间:2023-03-25 20:24:21 Python

介绍目前python软件开发中普遍使用django,django与xadmin的结合大大节省了开发时间,加快了开发效率.尽管如此,模型运行还是需要手动添加或修改逻辑。好在django提供了这种机制,方法是defsave_models(self)。该方法是在保存或修改django模型时,可以通过添加个人逻辑重载的方法。示例如下:需要的Dayneed表需要在添加时向Account表添加数据,修改时向Account表修改数据。假设增加的数据是dayneed的扩展值全部加到Account的扩展值上,修改后的数据是Account的扩展值减去dayneed的旧扩展值,dayneed的新扩展值被添加到Account的扩展值。收藏defsave_models(self):path=self.request.pathifpath.split('/')[-2]=='update':obj=self.new_objoldextend=Dayneed.objects.filter(id=obj.id)[0].extendcurtime=obj.timemoney=obj.extendacs=Account.objects.filter(time=curtime)如果acs:acc=acs[0]acc.extend-=oldextendacc.extend+=moneyacc.save()else:acc=Account()acc.extend=moneyacc.save()obj.save()else:obj=self.new_objcurtime=obj.timemoney=obj.extendobj.save()acs=Account.objects.filter(time=curtime)foraccinacs:如果acc为None:acc.extend=moneyacc.save()else:acc.extend+=moneyacc.save()ifnotacs:acc=Account()acc.time=curtimeacc.extend=moneyacc.save()说明self.new_obj已经用new实例化或者修改DayneedobjectDayneed.objects.filter(id=obj.id)查找数据库中与当前修改的Dayneed表有相同数据但未保存在数据库中的旧Dayneed表。obj.save()是保存当前修改或新增的Dayneed表。结束语经过上面的描述,说明可以操作save_models的逻辑了。使用任何源代码都应该有无所畏惧和敢于实践的能力。链接如下:插曲2:django+xadmin(pycharm)在线级项目之404和500配置详解(详细教程)