Грешката е от postgres, а не от django. Можете да пренапишете това като:
WITH v_table_name AS
(
SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
FROM table_name
)
UPDATE table_name set table_name.col1 = v_table_name.rn
FROM v_table_name
WHERE table_name.primary_key = v_table_name.primary_key;
Или алтернативно:
UPDATE table_name set table_name.col1 = v_table_name.rn
FROM
(
SELECT row_number() over (partition by col2 order by col3) AS rn, primary_key
FROM table_name
) AS v_table_name
WHERE table_name.primary_key = v_table_name.primary_key;
Това работи. Току-що го тествах на postgres-9.6. Ето синтаксиса за UPDATE (вижте незадължителния от списък ).
Надявам се това да помогне.