Модель 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:
```postgres
ЗАЯВЛЕНИЕ: ALTER TABLE "djf_surveys_survey" ADD COLUMN "owner_id" bigint NOT NULL CONSTRAINT
"djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id" ССЫЛКИ "users_user"("id")
ПЕРВОНАЧАЛЬНО ОТЛОЖЕНО ОТЛОЖЕНО;
УСТАНОВИТЕ ОГРАНИЧЕНИЯ "djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id" НЕМЕДЛЕННО
```
Строка внешнего ключа моей модели:
```
owner = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
```
Это простая связь с внешним ключом. Я никогда раньше этого не видел, и разумный поиск в Google не дал ничего релевантного. Я не понимаю, почему sql postgres создает столбец как отложенный, а затем добавляет ограничение, которое делает его НЕМЕДЛЕННЫМ...
Полная трассировка стека выглядит следующим образом... (MTIA...:)
```python
mind_survey_app_local_django | Запуск миграции:
mind_survey_app_local_postgres | 2025-12-31 15:37:17.848 UTC [37] ОШИБКА: столбец «owner_id» отношения «djf_surveys_survey» содержит нулевые значения
mind_survey_app_local_postgres | 2025-12-31 15:37:17.848 UTC [37] ЗАЯВЛЕНИЕ: ALTER TABLE "djf_surveys_survey" ДОБАВИТЬ СТОЛБЕЦ "owner_id" bigint NOT NULL CONSTRAINT "djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id" ССЫЛКИ "users_user"("id") ОТЛОЖЕННАЯ ПЕРВОНАЧАЛЬНО ОТЛОЖЕННАЯ; УСТАНОВИТЕ ОГРАНИЧЕНИЯ «djf_surveys_survey_owner_id_f1d8e19a_fk_users_user_id» НЕМЕДЛЕННО
mind_survey_app_local_django | Traceback (последний вызов — последний):
mind_survey_app_local_django | Файл «/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py», строка 103, в _execute
mind_survey_app_local_django | return self.cursor.execute(sql)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/psycopg/cursor.py", строка 97, выполняется
mind_survey_app_local_django | поднять ex.with_traceback(None)
mind_survey_app_local_django | psycopg.errors.NotNullViolation: столбец «owner_id» отношения «djf_surveys_survey» содержит нулевые значения
mind_survey_app_local_django |
mind_survey_app_local_django |
mind_survey_app_local_django | Вышеуказанное исключение было непосредственной причиной следующего исключения:
mind_survey_app_local_django |
mind_survey_app_local_django |
mind_survey_app_local_django | Traceback (последний вызов — последний):
mind_survey_app_local_django | Файл «/app/manage.py», строка 30, в
mind_survey_app_local_django | main()
mind_survey_app_local_django | Файл «/app/manage.py», строка 26, в главном
mind_survey_app_local_django | Execute_from_command_line(sys.argv)
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/core/management/_init_.py", строка 442, в Execute_from_command_line
mind_survey_app_local_django | утилита.execute()
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/core/management/_init_.py", строка 436, выполняется
mind_survey_app_local_django | self.fetch_command(подкоманда).run_from_argv(self.argv)
mind_survey_app_local_django | Файл «/usr/local/lib/python3.12/site-packages/django/core/management/base.py», строка 413, в run_from_argv
mind_survey_app_local_django | self.execute(*args, **cmd_options)
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", строка 459, выполняется
mind_survey_app_local_django | вывод = self.handle(*args, **options)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/core/management/base.py", строка 107, в оболочке
mind_survey_app_local_django | res = handle_func(*args, **kwargs)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/core/management/commands/migrate.py", строка 357, в дескрипторе
mind_survey_app_local_django | post_migrate_state = executor.migrate(
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py", строка 135, в миграции
mind_survey_app_local_django | state = self._migrate_all_forwards(
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py", строка 167, в _migrate_all_forwards
mind_survey_app_local_django | state = self.apply_migration(
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/migrations/executor.py", строка 255, в apply_migration
mind_survey_app_local_django | state =migration.apply(state,schema_editor)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/migrations/migration.py", строка 132, применяется
mind_survey_app_local_django | Operation.database_forwards(
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/migrations/operations/fields.py", строка 110, в data_forwards
mind_survey_app_local_django | Schema_editor.add_field(
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/backends/base/schema.py", строка 768, в add_field
mind_survey_app_local_django | self.execute(sql, params или None)
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/backends/postgresql/schema.py", строка 45, выполняется
mind_survey_app_local_django | return super().execute(sql, params)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | "/usr/local/lib/python3.12/site-packages/django/db/backends/base/schema.py", строка 202, в процессе выполнения
mind_survey_app_local_django | курсор.execute(sql, params)
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", строка 122, в процессе выполнения
mind_survey_app_local_django | return super().execute(sql, params)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", строка 79, в процессе выполнения
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", строка 92, в _execute_with_wrappers
mind_survey_app_local_django | return executor(sql, params, Many, context)
mind_survey_app_local_django ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", строка 100, в _execute
mind_survey_app_local_django | с self.db.wrap_database_errors:
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | "/usr/local/lib/python3.12/site-packages/django/db/utils.py", строка 91, в _exit_
mind_survey_app_local_django | поднять dj_exc_value.with_traceback(traceback) из exc_value
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/django/db/backends/utils.py", строка 103, в _execute
mind_survey_app_local_django | return self.cursor.execute(sql)
mind_survey_app_local_django | ^^^^^^^^^^^^^^^^^^^^^
mind_survey_app_local_django | Файл "/usr/local/lib/python3.12/site-packages/psycopg/cursor.py", строка 97, выполняется
mind_survey_app_local_django | поднять ex.with_traceback(None)
mind_survey_app_local_django | django.db.utils.IntegrityError: столбец «owner_id» отношения «djf_surveys_survey» содержит нулевые значения
mind_survey_app_local_flower | Ошибка: ни один узел не ответил в течение ограниченного времени
mind_survey_app_local_django | Применение djf_surveys.0034_survey_owner_surveyselection_owner...
mind_survey_app_local_flower недоступны
mind_survey_app_local_celerybeat | celery beat v5.5.3 (иммунитет) запускается.
mind_survey_app_local_django завершился с кодом 1
```

Подробнее здесь: https://stackoverflow.com/questions/798 ... -app-is-in
Ответить

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

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

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

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

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