Gibt es eine effizientere Möglichkeit, dies vielleicht mit F -Ausdrücken zu tun? Einige wie man das DB -Treffer reduziert? < /P>
# 1st way hits DB twice per object
def something():
pks = [4, 2, 1, 3, 0]
for i in range(len(pks)):
mymodel.objects.get(pk=pks).update(attr=i)
# 2nd way hits DB once per obj and once for the queryset
def something():
pks = [4, 2, 1, 3, 0]
order = Case(*[When(pk=pk, then=pos) for pos, pk in enumerate(pks)])
query = mymodel.objects.filter(pk__in=pks).order_by(order)
for i in range(len(query)):
query.attr = i
query.save()
< /code>
Bearbeiten, um Variablen konsistent zu verschieben. < /p>
Django: Aktualisieren Sie mehrere Objektattribute ⇐ Python
-
- Similar Topics
- Replies
- Views
- Last post