Django, попытка добавить поле в существующую модель вызывает ошибку - PullRequest
1 голос
/ 01 апреля 2020

У меня есть Django API остального фреймворка, который содержал следующую модель:

class Points(models.Model):

    mission_name = models.CharField(name='MissionName',
                                    unique=True,
                                    max_length=255,
                                    blank=False,
                                    help_text="Enter the mission's name"
                                    )

    latitude = models.FloatField(name="GDT1Latitude",
                                 unique=False, max_length=255, blank=False,
                                 help_text="Enter the location's Latitude, first when extracting from Google Maps.",
                                 default=DEFAULT_VALUE)
    longitude = models.FloatField(name="GDT1Longitude",
                                  unique=False, max_length=255, blank=False,
                                  help_text="Enter the location's Longitude, second when extracting from Google Maps.",
                                  default=DEFAULT_VALUE)

Добавлено поле пользователя:

class Points(models.Model):

     user = models.ForeignKey(User, on_delete=models.CASCADE)
     # rest of fields...

Iv'e добавил поле пользователя, при попытке чтобы выполнить миграцию и перенести ее, я получаю следующую ошибку:

django.db.utils.ProgrammingError: column find_second_gdt_points.user does not exist
LINE 1: SELECT "find_second_gdt_points"."id", "find_second_gdt_point...

Что я не получаю, конечно, этот столбец не существует.

Это то, для чего нужны миграции, нет

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

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

class Points(models.Model):

     user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, default=None)
     ...

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

0 голосов
/ 01 апреля 2020

Попробуйте добавить значение по умолчанию = Нет,

class Points(models.Model):

      user = models.ForeignKey(User, on_delete=models.CASCADE, default= None)
      # rest of fields...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...