擅长:python、mysql、java
<p>从Django 2.2开始,您可以使用<a href="https://docs.djangoproject.com/en/dev/ref/models/querysets/#bulk-update" rel="noreferrer">^{<cd1>}</a>queryset方法有效地更新所提供模型实例上的给定字段,通常只需一个查询:</p>
<pre><code>objs = [
Entry.objects.create(headline='Entry 1'),
Entry.objects.create(headline='Entry 2'),
]
objs[0].headline = 'This is entry 1'
objs[1].headline = 'This is entry 2'
Entry.objects.bulk_update(objs, ['headline'])
</code></pre>
<p>在旧版本的Django中,可以将<a href="https://docs.djangoproject.com/en/dev/ref/models/querysets/#update" rel="noreferrer">^{<cd2>}</a>与<code>Case</code>/<code>When</code>一起使用,例如:</p>
<pre><code>from django.db.models import Case, When
Entry.objects.filter(
pk__in=headlines # `headlines` is a pk -> headline mapping
).update(
headline=Case(*[When(pk=entry_pk, then=headline)
for entry_pk, headline in headlines.items()]))
</code></pre>