170 похожих чатов

У меня есть модель с полем subtopics М2М (Типо тема и

у неё подтемы, ссылка на свою же модель)
Но я хочу сделать ее FK и назвать parent_topic
В миграциях я бы хотел вытащить первого родителя и сохранить его а потом вставить в новое поле parent_topic
Как можно это сделать?

6 ответов

11 просмотров

Какие тут проблемы? Добавляется миграция через makemigrations —empty. Далее пишется миграция через migrations.RunPython. Получить нужные топики, annotate(count_child=Count('subtopics')).exclude(count_child=0) тут все инстансы у которых есть подтопики. Всё это в for x in qs, у каждого инстанса x.subtopics.update(parent=x)

Damron-Nafikov Автор вопроса

А, хм, получается я достаю по родителю для топика(если есть) Где-то это сохраняю, потом делаю миграции и уже опять свой скрипт Но я ведь уже изменю класс и там не будет поля subtopics, а будет новый parent_topic Джанго же тогда мне ошибку даст, когда в первом скрипте сделаю Topic.objects.annotatate(ccount=Count(‘subtopics’)) Так как такого поля уже не будет

Сделай 3 миграции. 1) Добавить поле 2) кастомная миграция 3) удаление поля

Damron-Nafikov Автор вопроса

Хорошо, попробую)

Damron-Nafikov Автор вопроса

так не получается, когда пытаюсь достать всех своих родителей, то мне пишет, что такого поля нет, так как в классе больше нет поля с таким названием

Как так нет поля, если оно должно удалиться только после выполнения предыдущих двух?

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
в JclConsole объявлено так: function CtrlHandler(CtrlType: DWORD): BOOL; stdcall; - где ваше объявление с stdcall? у вас на картинке нет stdcall
Karagy
8
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Карта сайта