TypeError: аргумент int () должен быть строкой при переносе модели django - PullRequest
0 голосов
/ 22 сентября 2019

Я сталкиваюсь с проблемой после добавления нового поля в качестве внешнего ключа:

Сначала мои модели были такими:

class Book(models.Model):
    title = models.CharField(max_length=150)

Позже я добавил внешнийполе ключа для автора и моих моделей ниже:

class Author(models.Model):
    name = models.CharField(max_length=50)

class Book(models.Model):
    title = models.CharField(max_length=150)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)

После того, как я добавляю новый внешний ключ, я запускаю команду pythion3 manage.py makemigrations, и она подсказывает мне вставить 1 или 2, я вставляю1 и затем добавьте timezone.now() это было руководство: enter image description here

позже, я попытался запустить команду python3 manage.py migrate, но она выдает мне следующую ошибку:

TypeError: int() argument must be a string, a bytes-like object or a number, not 'datetime.datetime'

Я знаю, что могу исправить это, используя null=True, blank=Tru e в поле автора, но мне не нужно оставлять это поле пустым

Я не понимаю, как исправить эту ошибку, можеткто-нибудь помочь мне исправить эту ошибку?Даже я не понимаю, как добавить новые ключевые поля foregin после нескольких пробных миграций,

Может кто-нибудь предложить мне в этом случае?

1 Ответ

1 голос
/ 22 сентября 2019

Поле author не является полем nullable.Это означает, что для существующих Book объектов в вашей базе данных вам необходимо указать значение foreignkey для поля author, которое указывает на существующий объект Author.

Вы получаете сообщение об ошибке, поскольку для поля ForeignKey требуется integer, но вы передаете datetime объект

Создание поля nullable решит проблему:

author = models.ForeignKey(Author, on_delete=models.CASCADE, null=True, blank=True)

Если вы не хотите, чтобы поле было nullable, вам придется передать значение по умолчанию один раз.Это значение должно быть значением pk существующего объекта Author, а не объектом datetime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...