django - update a queryset in a specific order -



django - update a queryset in a specific order -

i have "index" field stores consequent range of integers, safety set unique.

now want increment field one, maintain unique update value in descending order:

mymodel.objects.all().order_by('-index').update(index=f('index')+1)

what surprises me on machine integrityerror gets raised , complains duplicated index value.

is there missed? save records 1 one?

thanks in advance!

update:

i think root problem there no order in sql update command (see update order by, , sql server: update table using order by)

obviously django translates statement sql update order_by, leads undefined behavior , creates different result per machine.

you ordering queryset ascending. can create descending adding '-' field name in order by:

mymodel.objects.all().order_by('-index').update(index=f('index')+1)

django docs order_by

django order django-queryset

Comments

Popular posts from this blog

java - How to set log4j.defaultInitOverride property to false in jboss server 6 -

c - GStreamer 1.0 1.4.5 RTSP Example Server sends 503 Service unavailable -

Using ajax with sonata admin list view pagination -