Val*_*hio 1 django django-models
我有以下型号:
class Address(models.Model):
full_address = models.CharField(max_length=100)
Run Code Online (Sandbox Code Playgroud)
有些full_address以"地区"结尾.例子:
我想从任何full_address以它结尾的字段中删除"Region" .
这是一个可能的解决方案,但它很慢,因为你需要Address逐个遍历:
for i in Address.objects.filter(full_address__endswith=' Region'):
i.full_address = i.full_address[:-7]
i.save()
Run Code Online (Sandbox Code Playgroud)
有没有办法实现上述功能Address.objects.update()?
您可以在此处使用查询表达式
from django.db.models import F, Func, Value
Address.objects.filter(full_address__endswith=' Region').update(
full_address=Func(
F('full_address'),
Value(' Region'), Value(''),
function='replace',
)
)
Run Code Online (Sandbox Code Playgroud)
请注意,如果您认为可以获得包含文本的字符串' Region' 以及以该字符串结尾的字符串,则这将替换为空字符串.这似乎不太可能,但是如果你想要特别小心,你可以使用regexp_replace而不是replace使用第一个Value(即Value(' Region$'))的相应表达式来确保你只匹配你想要替换的那个部分.
| 归档时间: |
|
| 查看次数: |
25 次 |
| 最近记录: |