【问题标题】:Django queryset update fields with the lowercase equivalent - Django具有小写等效项的 Django 查询集更新字段 - Django
【发布时间】:2011-05-10 08:40:53
【问题描述】:

我想在 go 中更新各种模型。

我需要用小写等效项更新 varchar 字段。


知道这是否可以通过单个查询集完成吗?

【问题讨论】:

  • 你为什么不插入小写开头?
  • 跟我想的完全一样。一定是盲人:)你有什么办法可以帮助我处理这个查询集吗?
  • 是永久添加到项目中,还是一次性清理现有数据?
  • 一次性 :) 我认为将其用作永久黑客是疯狂的:P

标签: python sql django django-models django-queryset


【解决方案1】:

由于这是一次性的,因此只运行 ./manage.py dbshell 并直接运行 UPDATE 查询会更容易。

UPDATE sometable SET somefield=LOWER(somefield);

【讨论】:

  • 嗨,我希望我能做到这一点,这些字段是使用 TRIPLE DES 加密的,所以我认为我需要在 Django 这边进行
  • 哇,这……不好玩。在这种情况下,没有办法一次性使用 Django ORM。相反,您必须逐个遍历所有条目,替换字段值并保存。
  • 嗨,有可能用 Django ORM 来做,检查我的答案
【解决方案2】:

如果你想用 ORM 来做,试试Database Functions。 您可以快速拨打一个电话:

from django.db.models.function import Lower
SomeModel.objects.update(somefield=Lower('somefield'))

【讨论】:

  • 使用当前 Django (3.x) 导入应该是:from django.db.models.functions import Lower
  • 这个不错!
猜你喜欢
  • 2021-10-25
  • 1970-01-01
  • 2023-03-14
  • 2018-10-06
  • 1970-01-01
  • 2011-07-10
  • 1970-01-01
  • 1970-01-01
  • 2016-08-17
相关资源
最近更新 更多