Вы пытаетесь добавить ненулевое поле '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)