具有字符的 Django concat F 函数
Django concat F function with character
我有一个模型 group_id
CharField
。此字段应等于对象的 pk
加上“#”前缀。
我正在尝试以这种方式更新数据库。
MyModel.objects.update(group_id=f'#{F("pk")}')
但这不起作用。事实上,它为所有对象设置 '#F(pk)'
字符串。
我可以使用 F
函数执行此操作吗?
您使用了Concat
[Django-doc]函数:
from django.db.models import F, Value
from django.db.models.functions import <b>Concat</b>
MyModel.objects.update(group_id=<b>Concat(</b>Value('#'), F('pk')<b>)</b>)
这将生成如下所示的查询:
UPDATE app_mymodel
SET group_id = CONCAT_WS('', '#', app_mymodel.pk)
(在本地我得到了这个查询,但它可能取决于后端等)
这里的_WS
表示"with separator",但是由于分隔符是空的,所以和"simple" concat没有区别。
注意当然group_id
这里应该有一个类型(可能CharField
可以接受用这个表达式生成的值)。
我有一个模型 group_id
CharField
。此字段应等于对象的 pk
加上“#”前缀。
我正在尝试以这种方式更新数据库。
MyModel.objects.update(group_id=f'#{F("pk")}')
但这不起作用。事实上,它为所有对象设置 '#F(pk)'
字符串。
我可以使用 F
函数执行此操作吗?
您使用了Concat
[Django-doc]函数:
from django.db.models import F, Value
from django.db.models.functions import <b>Concat</b>
MyModel.objects.update(group_id=<b>Concat(</b>Value('#'), F('pk')<b>)</b>)
这将生成如下所示的查询:
UPDATE app_mymodel
SET group_id = CONCAT_WS('', '#', app_mymodel.pk)
(在本地我得到了这个查询,但它可能取决于后端等)
这里的_WS
表示"with separator",但是由于分隔符是空的,所以和"simple" concat没有区别。
注意当然group_id
这里应该有一个类型(可能CharField
可以接受用这个表达式生成的值)。