Как написать миграцию для изменения первичного ключа модели с ManyToManyField

у меня естьUserProfile модель, которая относится к моемуUser модель сOneToOneField, Я также используюpost_save сигнал для автоматического созданияUserProfile когда пользователь создан. Это прекрасно работает помимо создания пользователя через администратора (где я использую встроенный), когда я получаю сообщение об ошибке дублирующего профиля.В этом ответе рекомендуется установить первичный ключ как OneToOneField со ссылкой на пользователя..

Итак, прежде чем:

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL)
    # ...
    subjects = models.ManyToManyField(Subject, null=True, blank=True)

После

class UserProfile(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, primary_key=True)
    # ...
    subjects = models.ManyToManyField(Subject, null=True, blank=True)

Я пытаюсь сделать это с помощью миграций в Django 1.7, но жизнь усложняется тем, что в профиле есть рядManyToManyField - так что все они относятся кid полеUserProfile модель. С помощьюmakemigrations создает миграции для того, чтобы сделать пользователя первичным ключом и удалить старое поле id, но игнорирует ManyToManyField.

В настоящее время я иду по кроличьей норе, используя многоRunSQL заявления в миграции, чтобы изменить сквозную таблицу дляManyToManyField, Я только что натолкнулся на другую ошибку, когда имя ограничения не совпадает в одной таблице с другой.

Итак, мой вопрос: есть ли в миграциях Django метод, который будет выполнять работу по изменению сквозной таблицы, чтобы она ссылалась на новый первичный ключ, обновляя все ограничения, ключи и т. Д.? Если нет, как лучше всего справиться с этой ситуацией?

Я использую Django 1.7 с MySQL.

Ответы на вопрос(1)

Ваш ответ на вопрос