#python #sql #django #django-queryset
#питон #sql #джанго #django-queryset
Вопрос:
Добрый вечер,
Я хотел бы спросить, существует ли другой метод, отличный от необработанного SQL-запроса, для обновления элементов по определенному условию внутри моего views.py ? Например, я знаю, что мог бы выполнить запрос insert следующим образом:
models.py
class Person(models.Model):
name = models.CharField()
age = models.IntegerField()
value = models.IntegerField()
views.py
def something(request):
...
qs = Person(name="John Doe", age=34, value=10)
qs.save()
...
Существует ли аналогичный метод для обновления всех «лиц», если они соответствуют определенному условию?
...
qs = Person("UPDATE Person SET value=5 WHERE age < 30") # or something like this
qs.save()
...
Спасибо за вашу помощь и советы и отличных выходных всем вам!
Комментарии:
1.
Person.objects.filter(age__lt=30).update(value=5)
Ответ №1:
Вы можете использовать .update(…)
[Django-doc] для обновления записей соответствующей таблицы и использовать .filter(…)
[Django-doc], чтобы указать, какие элементы обновлять.
Таким образом, вы можете фильтровать с помощью:
Person.objects.filter(age__lt=30).update(value=5)
Здесь мы используем __lt
поиск [Django-doc], чтобы указать, что возраст должен быть меньше 30.