本站消息

站长简介/公众号


站长简介:逗比程序员,理工宅男,前每日优鲜python全栈开发工程师,利用周末时间开发出本站,欢迎关注我的微信公众号:程序员总部,程序员的家,探索程序员的人生之路!分享IT最新技术,关注行业最新动向,让你永不落伍。了解同行们的工资,生活工作中的酸甜苦辣,谋求程序员的最终出路!

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

如何设置 Django 模型字段的 NoData 值

发布于2021-09-27 03:13     阅读(807)     评论(0)     点赞(20)     收藏(3)



我刚刚意识到我上传到 Django 模型的数据集有一个字段(称为“A”),其中“-999”表示 NoData。这会影响我的计算,但我不想从过滤器中完全排除这些对象,仅用于计算,例如:objects.aggregate(Avg('A'))。

我如何告诉我的 Django 模型将此值视为字段 A 的 NoData?我看到 null=True 告诉 Django 将空值存储为 NoData,但是如果它应该在值 = -999 时存储 Null 呢?

如果没有直接的方法,那么在我进行这些计算时使用 exclude() 的最佳/最有效方法是什么?或者我应该在我的数据库中进行某种替换以将字段 A 中的 -999 转换为 Null(如何?)。我谢谢你


解决方案


一个快速的解决方案是exclude在您的聚合查询中使用:

YourModel.objects.exclude(a=-999).aggregate(Avg('a'))

如果您想将 -999 值替换为None

  1. 使用正确的参数调整您的模型字段(例如:null=True)
  2. 进行架构迁移
  3. 进行数据迁移

数据迁移需要调用如下函数:

def update_nodata(apps, schema_editor):
    YourModel = apps.get_model('yourappname', 'YourModel')
    for obj in YourModel.objects.filter(a=-999):
        obj.a = None
        obj.save()






所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1046343/30cdd9f90bcc3ed79ad0/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

20 0
收藏该文
已收藏

评论内容:(最多支持255个字符)