37👍
✅
Both the previous answerers have part of the solution: you should use update
in conjunction with F()
:
Model.objects.filter(id=id).update(field=F('field') +1))
Note this does an in-place UPDATE without any need for SELECT at all.
- Call method once to set multiple fields in Django Rest Framework serializer
- Django: Change the DOM id at form field level
- Assigning blocktrans output to variable
- Can you use Python for both front end and back end using Django framework?
1👍
for django
v 2.2 (and maybe 3+) SQL statement compilation function could be:
from django.db.models.sql.subqueries import UpdateQuery
def compile_update_query(query_set, update_kwargs):
query = query_set.query.chain(UpdateQuery)
query.add_update_values(update_kwargs)
return str(query)
where query_set
is MyShinyModel.objects.filter(id=42)
and update_kwargs
is a dictionary of model fields to update
- How to track the progress of individual tasks inside a group which forms the header to a chord in celery?
- How to filter search by values that are not available
- How to achieve authentication with django-auth-ldap?
- Cron parser and validation in python
- Printing Receipt from Django Web Application
0👍
If you need to convert the UPDATE ORM
query to UPDATE SQL
statement without performing it
The update() method is applied instantly and returns the number of rows matched by the query (django 1.8 docs)
def generate_update_sql(queryset, update_kwargs):
""" [checked on django 1.8]
Converts queryset with update_kwargs
like if was: queryset.update(**update_kwargs)
"""
from django.db.models import sql
query = queryset.query.clone(sql.UpdateQuery)
query.add_update_values(update_kwargs)
compiler = query.get_compiler(queryset.db)
sql, params = compiler.as_sql()
return sql % params
Usage
qs = Event.objects.exclude(app='some')
update_kwargs = dict(description='test', action='action')
generate_update_sql(qs, update_kwargs)
Will return
UPDATE `api_event` SET `description` = test, `action` = action WHERE NOT (`api_event`.`app` = some)
- Django admin – group permissions to edit or view models
- Gunicorn throws OSError Errno 1 when starting
- Gunicorn not responding
- Integrating django-haystack with django-rest-framework?
Source:stackexchange.com