【发布时间】:2017-03-03 07:01:27
【问题描述】:
我希望更新查询集中对象的 Django 模型字段。具体来说,我想在其中一个字段上添加一个前缀,即如果一个对象的名称像“Wilson”,我想在它前面加上“OLD”,那么它将变成“OLDWilson”。
我可以想到以下使用循环:
my_objs = MyObjects.objects.filter(name='some_name') # This has over 40000 records
for obj in my_objs:
obj.name = 'OLD{0}'.format(obj.name)
obj.save()
我希望有一种更优雅的方式来利用此处指定的 UPDATE 方法:Django Mass Update
类似于以下内容:
MyObjects.objects.filter(name='some_name').update(name='OLD+name_here')
关于如何实现这一点的任何指示?
【问题讨论】:
-
通常将标志直接放入文本数据不是一个好主意。您应该创建一个字段
old,如果需要,将其设置为true,并在您的视图/模板中添加OLD文本。换句话说:划分模型和表示。 -
@Frankline 试过了吗??
-
我昨天没有测试我的答案,是的 'OLD'+F() 返回一个错误,我想我发现了一个类似的问题,应该可以满足您的需要:stackoverflow.com/questions/8143362/…