Невозможно добавить ненулевое поле 'profile' в пост без указания значения по умолчанию. Это происходит потому, что БД нужно что-то заполнить в существующих строках.

я создал модель post, в которую не добавил внешний ключ 'PROFILE'.

class Post(models.Model):
    profile = models.ForeignKey(profile, on_delete=models.CASCADE)
    id = models.UUIDField(primary_key=True, default=uuid.uuid4)
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    caption = models.CharField(max_length=250, blank=True, null=True)
    image = models.ImageField(upload_to="post_images", blank=True, null=True)
    created = models.DateTimeField(default=datetime.now())
    no_of_likes = models.IntegerField(default=0)

потом я добавил его & запустил makemigrations, он вернул мне сообщение о том, что мне нужно указать значение по умолчанию. по ошибке я добавил id номер этой модели профиля в качестве значения по умолчанию. затем каждый раз, когда я делаю миграцию, он возвращается IntegrityError: Строка в таблице 'App_post' с первичным ключом '6b6b280dbce848acb9fbbec677d01b1' имеет недопустимый внешний ключ: App_post.profile_id содержит значение '1', которое не имеет соответствующего значения в App_profile.id.

теперь даже после того, как я полностью удалил строку профиля из модели поста, он все еще возвращает мне это при миграции. как мне это исправить? Я хочу изменить значение по умолчанию, но он возвращает сообщение App_post. profile_id содержит значение '1', которое не имеет соответствующего значения в App_profile.id я удалил 1 из defult, я удалил весь ряд, но он не меняется. мне пришлось однажды перевернуть весь проект по этой причине, пожалуйста, помогите!!!

Перейдите к миграциям, отредактируйте файл миграции, в который вы сделали миграцию профиля, и вы увидите

operations = [
        migrations.AddField(
            model_name='post',
            name='profile ',
            field=models.ForeignKey(default=1), #your field
            preserve_default=False, 
        ),
    ]

просто закомментируйте это и затем запустите migrate. после комментирования он должен выглядеть примерно так:

operations = [
        # migrations.AddField(
        #     model_name='post',
        #     name='profile ',
        #     field=models.ForeignKey(default=1),
        #     preserve_default=False,
        # ),
    ]
Вернуться на верх