Ошибка миграции django при изменении поля FK на обычное поле

Часть моей модели изначально выглядела так.

class RealTimeLocation(models.Model):

    name = models.CharField(max_length=80)
    latlng = models.PointField(default=None)


class CabLog(models.Model):

    location = models.ForeignKey(RealTimeLocation,
                      on_delete=models.CASCADE,
                      related_name='cablog_locations')

Потом я подумал, что поле FK не нужно, поэтому я изменил поле fk на поле Point.

class RealTimeLocation(models.Model):

    name = models.CharField(max_length=80)
    latlng = models.PointField(default=None)


class CabLog(models.Model):

    location = models.PointField()//

'python manage.py makemigrations' проблем нет, но при миграции я получаю ошибку.

.django.db.utils.ProgrammingError: колонка "location_id" отношения "myapp_cablog" не существует.

Я пробовал добавлять опцию null=True в pointfield, удалять migrate-скрипты и делать все заново много раз, безрезультатно. Итак, прежде чем я полностью фальсифицирую весь проект и начну все сначала, есть ли у кого-нибудь какие-нибудь решения для этого. У меня уже есть некоторые данные в DB, так что я действительно не хочу этого делать. Спасибо.

Вы получили эту ошибку, потому что запустили только makemigrations и migrate. Вы должны запустить sqlmigrate также.

Попробуйте следующие три команды:

python manage.py makemigrations appname

python manage.py sqlmigrate appname 0001 #You didn't run this command after makemigrations that's why you got that error

python manage.py migrate

Примечание: 0001 это значение будет генерироваться после makemigrations. Оно может быть либо 0001, либо 0002 и т.д.

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