Модель django с внешним ключом в настройках. AUTH_USER_MODEL завершается с ошибкой, когда приложение включается в другоеPython

Программы на Python
Ответить
Anonymous
 Модель django с внешним ключом в настройках. AUTH_USER_MODEL завершается с ошибкой, когда приложение включается в другое

Сообщение Anonymous »

У меня есть приложение для опросов, которое отлично работает как отдельное приложение и без каких-либо нареканий (с использованием sqlite).
Но когда я включаю приложение для опросов в другое приложение, использующее postgres в качестве базы данных, оно не может выполнить миграцию приложения для опросов, жалуясь, что Owner_id (foreign_key to settings.AUTH_USER_MODEL) таблицы опроса содержит нулевые значения.
django жалуется, что `column «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 не дал ничего релевантного. Я не понимаю, почему postgres sql создает столбец как отложенный, а затем добавляет ограничение, которое делает его НЕМЕДЛЕННЫМ...
Полная трассировка стека выглядит следующим образом... (MTIA...:)
python:
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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»