Оператор обновления в Django ORM

Как реализовать оператор sql

update table1 
set field1 = field2

используя Django ORM.

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
1 083
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать update() с F expression:

from django.db.models import F
Table1.objects.update(field1=F('field2'))
Ответ принят как подходящий

Если у вас есть режим Table1 с двумя полями, вы можете сделать это с помощью:

Table1.objects.update(field1=F('field2'))

Здесь мы используем F-expression, так что мы ссылаемся на поле, а не на значение 'field2'. Оператор с F(..) приведет к установке всех столбцов в строку 'field2' (конечно, это даже возможно, поскольку field1 должен иметь возможность хранить текстовые данные).

С Table1.objects мы получаем доступ к набору запросов Table1 с (если не указано дополнительно) объектами все. Обратите внимание, что мы нет загружаем их в память. Он используется для построения запроса.

С помощью .update(..) мы можем затем обновить данные в строках, которые соответствуют набору запросов (здесь строки все, но мы также могли бы отфильтровать).

Как было сказано ранее, мы не можем просто передать 'field2' в качестве значения. Поскольку ORM интерпретирует это как установку field1 всех строк в нить'field2'. Мы используем выражение F для ссылки на столбец.

Другие вопросы по теме