2015-08-09 2 views
0

I»пытается перенести эту модель:Джанго миграции с внешним ключом

class Questionpart_image(models.Model): 
    questionpart = models.ForeignKey(Questionpart, null=True, blank=True) 
    image = models.ImageField() 

к этому:

class Questionpart_image(Questionpart): # notice this base class 
    image = models.ImageField() 

сделать преимущество наследования. Django производит следующую миграцию:

class Migration(migrations.Migration): 

dependencies = [ 
    ('ochsite', '0016_auto_20150809_1903'), 
] 

operations = [ 
    migrations.RemoveField(
     model_name='questionpart_image', 
     name='id', 
    ), 
    migrations.RemoveField(
     model_name='questionpart_image', 
     name='questionpart', 
    ), 
    migrations.AddField(
     model_name='questionpart_image', 
     name='questionpart_ptr', 
     field=models.OneToOneField(default='', primary_key=True, to='ochsite.Questionpart', serialize=False, parent_link=True, auto_created=True), 
     preserve_default=False, 
    ), 
] 

, но это не правильно определить внешний ключ к questionpart_ptr из questionpart поля. Как я могу это достичь?
Я искал долгое время, но ничего ... спасибо

ответ

0

Просто не полагайтесь на автоматические миграции, создавайте свои собственные или модифицируйте их.

решения Простейшего будет путем перемещения AddField миграции в верхнюю части списка и ввести между ним и RemoveField сек RunPython блоком, который будет переписывать идентификаторы из старого поля к новому (и в другом направлении, в обратном направлении, если это необходимо).

+0

Спасибо, я закончил создание совершенно новых моделей, перенос данных и удаление старых моделей. Это немного сложнее, но это безопасно. – MartinM

Смежные вопросы