def update_many(objects, fields=[], using="default"):
    """Update list of Django objects in one SQL query, optionally only
    overwrite the given fields (as names, e.g. fields=["foo"]).
    Objects must be of the same Django model. Note that save is not
    called and signals on the model are not raised.

    Mostly from: http://people.iola.dk/olau/python/bulkops.py
    """
    if not objects:
        return

    import django.db.models
    from django.db import connections
    from django.db import transaction
    con = connections[using]

    names = fields
    meta = objects[0]._meta
    fields = [f for f in meta.fields
              if not isinstance(f, django.db.models.AutoField)
              and (not names or f.name in names)]

    if not fields:
        raise ValueError("No fields to update, field names are %s." % names)

    fields_with_pk = fields + [meta.pk]
    parameters = []
    for o in objects:
        parameters.append(tuple(f.get_db_prep_save(f.pre_save(o, True),
                          connection=con) for f in fields_with_pk))

    table = meta.db_table
    assignments = ",".join(("%s=%%s" % con.ops.quote_name(f.column))
                           for f in fields)
    con.cursor().executemany("update %s set %s where %s=%%s"
                             % (table, assignments,
                                con.ops.quote_name(meta.pk.column)),
                             parameters)
    transaction.commit_unless_managed(using=using)
def update_many ( objects , fields = [ ] , using = "default" ) : if not objects : return import django . db . models from django . db import connections from django . db import transaction con = connections [ using ] names = fields meta = objects [ 0 ] . _meta fields = [ f for f in meta . fields if not isinstance ( f , django . db . models . AutoField ) and ( not names or f . name in names ) ] if not fields : raise ValueError ( "No fields to update, field names are %s." % names ) fields_with_pk = fields + [ meta . pk ] parameters = [ ] for o in objects : parameters . append ( tuple ( f . get_db_prep_save ( f . pre_save ( o , True ) , connection = con ) for f in fields_with_pk ) ) table = meta . db_table assignments = "," . join ( ( "%s=%%s" % con . ops . quote_name ( f . column ) ) for f in fields ) con . cursor ( ) . executemany ( "update %s set %s where %s=%%s" % ( table , assignments , con . ops . quote_name ( meta . pk . column ) ) , parameters ) transaction . commit_unless_managed ( using = using )
Update list of Django objects in one SQL query, optionally only
    overwrite the given fields (as names, e.g. fields=["foo"]).
    Objects must be of the same Django model. Note that save is not
    called and signals on the model are not raised.

    Mostly from: http://people.iola.dk/olau/python/bulkops.py