Но когда я включаю приложение для опросов в другое приложение, использующее Postgres в качестве базы данных, оно не может выполнить миграцию приложения для опросов, жалуясь, что Owner_id (foreign_key to settings.AUTH_USER_MODEL) таблицы опроса содержит нулевые значения.
Django жалуется, что столбец «owner_id» имеет отношение "djf_surveys_survey" содержит нулевые значения
оператор postgres:
STATEMENT: ALTER TABLE "djf_surveys_survey" ADD COLUMN "owner_id" bigint NOT NULL CONSTRAINT
"djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id" REFERENCES "users_user"("id")
DEFERRABLE INITIALLY DEFERRED;
SET CONSTRAINTS "djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id" IMMEDIATE
Строка внешнего ключа моей модели:
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
Это простое отношение внешнего ключа. Я никогда раньше этого не видел, и разумный поиск в Google не дал ничего релевантного. Я не понимаю, почему sql postgres создает столбец как отложенный, а затем добавляет ограничение, которое делает его НЕМЕДЛЕННЫМ...
Полная трассировка стека выглядит следующим образом... (MTIA...
mind_survey_app_local_django | Running migrations:
mind_survey_app_local_postgres | 2025-12-31 15:37:17.848 UTC [37] ERROR: column "owner_id" of relation "djf_surveys_survey" contains null values
mind_survey_app_local_postgres | 2025-12-31 15:37:17.848 UTC [37] STATEMENT: ALTER TABLE "djf_surveys_survey" ADD COLUMN "owner_id" bigint NOT NULL CONSTRAINT "djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id" REFERENCES "users_user"("id") DEFERRABLE INITIALLY DEFERRED; SET CONSTRAINTS "djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id" IMMEDIATE
mind_survey_app_local_django | Traceback (most recent call last):
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 103, in _execute
mind_survey_app_local_django | return self.cursor.execute(sql)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/psycopg/cursor.py", line 97, in execute
mind_survey_app_local_django | raise ex.with_traceback(None)
mind_survey_app_local_django | psycopg.errors.NotNullViolation: column "owner_id" of relation "djf_surveys_survey" contains null values
mind_survey_app_local_django |
mind_survey_app_local_django | The above exception was the direct cause of the following exception:
mind_survey_app_local_django |
mind_survey_app_local_django | Traceback (most recent call last):
mind_survey_app_local_django | File "/app/manage.py", line 30, in
mind_survey_app_local_django | main()
mind_survey_app_local_django | File "/app/manage.py", line 26, in main
mind_survey_app_local_django | execute_from_command_line(sys.argv)
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 442, in execute_from_command_line
mind_survey_app_local_django | utility.execute()
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/core/management/__init__.py", line 436, in execute
mind_survey_app_local_django | self.fetch_command(subcommand).run_from_argv(self.argv)
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 413, in run_from_argv
mind_survey_app_local_django | self.execute(*args, **cmd_options)
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 459, in execute
mind_survey_app_local_django | output = self.handle(*args, **options)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", line 107, in wrapper
mind_survey_app_local_django | res = handle_func(*args, **kwargs)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/core/management/commands/migrate.py", line 357, in handle
mind_survey_app_local_django | post_migrate_state = executor.migrate(
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py", line 135, in migrate
mind_survey_app_local_django | state = self._migrate_all_forwards(
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py", line 167, in _migrate_all_forwards
mind_survey_app_local_django | state = self.apply_migration(
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py", line 255, in apply_migration
mind_survey_app_local_django | state = migration.apply(state, schema_editor)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/migrations/migration.py", line 132, in apply
mind_survey_app_local_django | operation.database_forwards(
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/migrations/operations/fields.py", line 110, in database_forwards
mind_survey_app_local_django | schema_editor.add_field(
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/schema.py", line 768, in add_field
mind_survey_app_local_django | self.execute(sql, params or None)
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/postgresql/schema.py", line 45, in execute
mind_survey_app_local_django | return super().execute(sql, params)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/base/schema.py", line 202, in execute
mind_survey_app_local_django | cursor.execute(sql, params)
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 122, in execute
mind_survey_app_local_django | return super().execute(sql, params)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 79, in execute
mind_survey_app_local_django | return self._execute_with_wrappers(
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 92, in _execute_with_wrappers
mind_survey_app_local_django | return executor(sql, params, many, context)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 100, in _execute
mind_survey_app_local_django | with self.db.wrap_database_errors:
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/utils.py", line 91, in __exit__
mind_survey_app_local_django | raise dj_exc_value.with_traceback(traceback) from exc_value
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", line 103, in _execute
mind_survey_app_local_django | return self.cursor.execute(sql)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | File "/usr/local/lib/python3.12/site-packages/psycopg/cursor.py", line 97, in execute
mind_survey_app_local_django | raise ex.with_traceback(None)
mind_survey_app_local_django | django.db.utils.IntegrityError: column "owner_id" of relation "djf_surveys_survey" contains null values
mind_survey_app_local_flower | Error: No nodes replied within time constraint
mind_survey_app_local_django | Applying djf_surveys.0034_survey_owner_surveyselection_owner...
mind_survey_app_local_flower | Celery workers not available
mind_survey_app_local_celerybeat | celery beat v5.5.3 (immunity) is starting.
mind_survey_app_local_django exited with code 1
Подробнее здесь: https://stackoverflow.com/questions/798 ... -app-is-in
Мобильная версия