Столбец содержит нулевые значения

Я добавил Person в качестве внешнего ключа к таблице CareerHistory.

    person = models.ForeignKey(
    Person, on_delete=models.PROTECT, default=None, related_name='careerist')

Я установил default=None, думая, что это позволит избежать ошибки при выполнении миграций о создании нового поля в существующей таблице без значения по умолчанию. Однако вместо этого я получил

django.db.utils.IntegrityError: column "person_id" contains null values

Теперь в этой таблице всего 114 человек, и все из них имеют идентификаторы, поэтому я нахожу эту ошибку очень запутанной. Я просмотрел этот ответ: SQL Django Null Constraint Error - cannot resolve?

и решил попробовать:

            person = models.ForeignKey(
    Person, on_delete=models.PROTECT, default='', related_name='careerist')

Однако это все равно вернулось с той же ошибкой. Затем я перешел к:

            person = models.ForeignKey(
    Person, on_delete=models.PROTECT, default='', null=True, related_name='careerist')

Но я все еще получаю ту же ошибку. Я не понимаю, что здесь происходит. Может ли кто-нибудь объяснить и показать мне, как это исправить? Я не хочу просто исправить это, я хочу понять, что здесь происходит. Может быть, мне нужно отредактировать мой файл(ы) миграций? Спасибо.

Проблема в том, что вы добавляете поле, но не разрешаете null. Добавив null=True, вы решите проблему во время миграции.

person = models.ForeignKey(
    Person, 
    on_delete=models.PROTECT, 
    null=True,
    default=None, 
    related_name='careerist'
)

в этой таблице 114 лиц, и все они имеют идентификаторы, поэтому я нахожу эту ошибку очень запутанной

.

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

После миграции данных можно удалить null=True, default=None.

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