Django сложная миграция как избавиться от OneToOneField и сделать ForeignKey

Вобщем изначально сделана модель с OneToOneField ключом. тоесть без собственного ID, Таким образом 1 запись равнялась 1й записи из другой таблицы. Теперь надо сделать, чтобы у таблицы был собственный ID и можно было несколько записей делать в этой модели.

Но проблема, что таблица уже имеет данные и ругается при миграции на то, что нумерация идет с начала.

как при миграции сделать чтобы новое id поле равнялось существующему other_id полю. чтобы копировалось значение ключа. ну либо чтобы я мог задать построчно новые id запросом. выбрать данные и указать им какие присвоить id

и чтобы счетчик автоинкремента получается исправить на максимальное значение потом в конце. нумерация там идет примерно с 1500 до 3000

ну или еще какой то способ.

Была модель

class Писатель(models.Model):
  Писатель = models.OneToOneField(
    Автор,
    on_delete=models.CASCADE,
    primary_key=True,
    verbose_name="Писатель"
  )
  # ... различные поля, настройки

class ПисательЗаписи(models.Model):
  автор = models.ForeignKey(Писатель, on_delete=models.CASCADE, verbose_name="Писатель")
  # ... различные поля

Стала

class Писатель(models.Model):
  Писатель = models.ForeignKey(
    Автор,
    on_delete=models.CASCADE,
    verbose_name="Писатель"
  )
  # ... различные поля, настройки

class ПисательЗаписи(models.Model):
  автор = models.ForeignKey(Писатель, on_delete=models.CASCADE, verbose_name="Писатель")
  # ... различные поля

Проблема

Таблица не пустая и уже имеет данные. При миграции сразу ругается на поле id Говорит оно не может быть пустым. что в принципе верно. Я пытаюсь его сделать None null чтобы оно начало нумерацию с единицы, НО опять проблема) эта модель уже использует связь с другой таблицей. тоесть там уже задан ID этой таблицы как ID другой таблицы. Вопрос. как мне сделать присвоение ID изначально заданными из старого поля значения.

Вернуться на верх