Как реализовать оператор sql
update table1
set field1 = field2
используя Django ORM.


Если у вас есть режим Table1 с двумя полями, вы можете сделать это с помощью:
Table1.objects.update(field1=F('field2'))
Здесь мы используем F-expression, так что мы ссылаемся на поле, а не на значение 'field2'. Оператор с F(..) приведет к установке всех столбцов в строку 'field2' (конечно, это даже возможно, поскольку field1 должен иметь возможность хранить текстовые данные).
С Table1.objects мы получаем доступ к набору запросов Table1 с (если не указано дополнительно) объектами все. Обратите внимание, что мы нет загружаем их в память. Он используется для построения запроса.
С помощью .update(..) мы можем затем обновить данные в строках, которые соответствуют набору запросов (здесь строки все, но мы также могли бы отфильтровать).
Как было сказано ранее, мы не можем просто передать 'field2' в качестве значения. Поскольку ORM интерпретирует это как установку field1 всех строк в нить'field2'. Мы используем выражение F для ссылки на столбец.