Вы пытаетесь добавить ненулевое поле 'id' в contact_info без поля по умолчанию.

Я использую команду python manage.py makemigrations

Однако, я получаю эту ошибку:

Вы пытаетесь добавить не нулевое поле 'id' в contact_info без значения по умолчанию; мы не можем этого сделать (базе данных нужно чем-то заполнить существующие строки). Пожалуйста, выберите вариант исправления: 1) Предоставить одноразовое значение по умолчанию сейчас (будет установлено для всех существующих строк) 2) Выйти и позволить мне добавить значение по умолчанию в models.py

.

Вот models.py:

class Posts(models.Model):
    id = models.AutoField(primary_key=True)
    post_uesr = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True,related_name='create_user')
    post_title = models.CharField(max_length=200)
    post_description = models.TextField(max_length=800, null=True, blank=True)
    post_likes = models.IntegerField(default=0)
    post_date = models.DateTimeField(default=datetime.now)

    def __str__(self):
        return f'{self.post_uesr}'

Это не баг, это документировано и логично. Вы добавляете новое поле, которое (согласно лучшей практике, как вы заметили) не является NULLable, поэтому django должен что-то в него внести для существующих записей .

Вы можете нажать 1, чтобы эта опция применилась

 1) Provide a one-off default now (will be set on all existing rows)

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

 2) Quit, and let me add a default in models.py

НО в вашем случае id - это поле по умолчанию, которое уже включено в каждую создаваемую вами таблицу и которое будет по умолчанию первичным ключом.

Если вы хотите добавить еще одно автополе, возможно, это поможет

order = models.AutoField(primary_key=False)

А если вы пытаетесь сделать первичный ключ в формате uuid4

import uuid
id = models.AutoField(default=uuid.uuid4, primary_key=True)

это говорит о том, что вы должны указать значение по умолчанию для вашего id.

попросить вас добавить вручную или добавить поле без значения по умолчанию.

например, для использования uuid в качестве вашего идентификатора:

import uuid
id = models.AutoField(default=uuid.uuid4, primary_key=True)
Вернуться на верх