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

data2modeldict的简化版get_or_create或update_or_create

时间:2023-03-26 17:37:46 Python

之所以写是因为不知道大家在djangoorm中使用get_or_create或update_or_create时是不是经常这样看:XXXX.objects.get_or_create(xx=xx,default={xx1=xx1,xx2=xx2,...})如果数据表的字段足够多,默认的字典会很长,不仅写起来麻烦,而且在视图中看起来也很长,所以我就在想怎么办简化这个操作。解决问题有了这个想法,我立刻想到了django中的model_to_dict。不知道小伙伴们还有没有印象。我在上一篇文章中写过介绍。如果需要,您可以阅读它。不要乱说。代码优先:defdata2modeldict(data,model=None,fields=None,exclude=None):_fields=data.keys()&{f.nameforfinmodel._meta.fields}iffields:_fields=set(fields)&_fieldsifexclude:_fields=_fields-set(exclude)return{f:data[f]forfin_fields}思路解读:首先我需要将前端请求的数据与模型字段进行交集,所以即直接使用的数据。接下来使用fields和excludefields分别指定要获取的字段和要排除的字段的数据。最后通过字段字典生成公式返回最终数据。你可以扩展它来表示数据和归档之间的对应关系,使这个工具方法更加强大。综上所述,这里主要实现使用了python集合的操作。这是一个非常简单的实现吗?如果大家有更好的方法欢迎留言学习。