Нулевое значение установлено в True, но все равно нарушает ограничение not-null

Я пытаюсь установить нулевую боковую панель из интерфейса администратора Django, как показано ниже:

enter image description here

Однако, когда я нажимаю "Сохранить", я получаю ошибку IntegrityError:

IntegrityError at /admin/qa/howquestion/112/change/
null value in column "sidebar_id" violates not-null constraint
DETAIL:  Failing row contains (112, <p>prettyprint a JSON file<br></p>, To pretty print a JSON file in Python, you can use the json m...).

Это странно, потому что null уже установлен в True:

sidebar = models.ForeignKey(Sidebar, on_delete=models.SET_NULL, related_name='qa_sidebars',null=True, blank=True)

И я тоже применял миграции.

Обратите внимание, что ошибка не возникает при разработке, когда подключена база данных SQLite3. Это происходит только при развертывании, в котором используется PostGreSQL.

У меня закончились варианты. Я обыскал все, но так и не понял этого. Кто-нибудь может помочь?

Редактирование: Я только что проверил файлы миграции, чтобы убедиться, что миграция была применена. Этот файл указывает на то, что миграция была применена, я думаю:

# Generated by Django 3.2 on 2024-03-14 16:48
  
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    dependencies = [
        ('marketing', '0001_initial'),
        ('qa', '0022_howquestion_no_code'),
    ]

    operations = [
        migrations.AlterField(
            model_name='howquestion',
            name='sidebar',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='qa_sidebars', to='marketing.sidebar'),
        ),
    ]
~      

Это было проблемой при переносе некоторых скриптов python на Linux. Они использовали winapi для значений NULL. В windows вы можете использовать NULL, если импортируете winapi, но обычно гораздо меньше проблем с тем, чтобы просто использовать 0 для NULL. Если поле id является автоинкрементным, вы должны использовать 0.

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