Django не видит отношения в тестах рабочего процесса

В обычных тестах, выполняемых локально, но если я пытаюсь запустить их через рабочие процессы, то получаю ошибку:

Django жалуется на следующую конструкцию внутри forms.py:

class FindToursForm(forms.Form):
    country_choice_list, city_choice_list = [('', '')], [('', '')]
    city_objects = City.objects.all()
    country_choice_list += [(city.country.id, city.country.name) for city in city_objects]
    city_choice_list += [(city.id, city.name) for city in city_objects]
    country = forms.ChoiceField(choices=country_choice_list, required=True)
    city = forms.ChoiceField(choices=city_choice_list, required=True)

А именно, в строке country_choice_list += [(city.country.id, city.country.name) for city in city_objects]

pylint.yml:

name: library_app tests
on: [push]
jobs:
  container-job:
    name: Tests
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgis/postgis
        env:
          POSTGRES_PASSWORD: test
          POSTGRES_DBNAME: postgres
          POSTGRES_USER: test
          POSTGRES_PORT: 5432
          POSTGRES_HOST: 127.0.0.1
        ports:
        - 5432:5432
    steps:
    - uses: actions/checkout@v2
    - name: Install Python
      uses: actions/setup-python@v2
      with:
        python-version: "3.10.12"
    - name: Install modules and dependencies
      run: |
        sudo apt-add-repository ppa:ubuntugis/ubuntugis-unstable
        sudo apt-get update
        sudo apt-get install gdal-bin libgdal-dev
        pip install GDAL==3.6.4
        python -m pip install --upgrade pip
        pip install -r tests/requirements.txt
    - name: API tests
      run: |
        chmod +x tests/test.sh
        ./tests/test.sh tests.test_api

runner.py:

"""Database setup."""

from types import MethodType
from typing import Any

from django.db import connections
from django.db.backends.base.base import BaseDatabaseWrapper
from django.test.runner import DiscoverRunner


def prepare_db(self):
    """Create database schema.

    Args:
        self: type - class object.

    """
    self.connect()
    self.connection.cursor().execute('CREATE SCHEMA IF NOT EXISTS tours_data;')


class PostgresSchemaRunner(DiscoverRunner):
    """Run table schema."""

    def setup_databases(self, **kwargs: Any) -> list[tuple[BaseDatabaseWrapper, str, bool]]:
        """Pre-setup database for work.

        Args:
            kwargs: Any - key word arguments.

        Returns:
            list[tuple[BaseDatabaseWrapper, str, bool]]: setupped database.
        """
        for conn_name in connections:
            connection = connections[conn_name]
            connection.prepare_database = MethodType(prepare_db, connection)
        return super().setup_databases(**kwargs)

Да, он на 100% указан в settins.py

tests.sh:

export DJANGO_SECRET_KEY="django-insecure-pt4!7*d%-dn)&lx6@598y(1!!rljgaieunnwk!n)-#r^ew(dcb"
export PG_HOST=127.0.0.1
export PG_PORT=5432
export PG_USER=test
export PG_PASSWORD=test
export PG_DBNAME=postgres
export MINIO_ACCESS_KEY_ID=ULk99g9UwyucWln57ypo
export MINIO_SECRET_ACCESS_KEY=dGKHOvOO9166VEMOO0tSRdUVVUcm5odgYgB2Yfjs
export MINIO_STORAGE_BUCKET_NAME=static
export MINIO_API=http://localhost:9000
export MINIO_CONSISTENCY_CHECK_ON_START=False


python3 manage.py test --verbosity=3 $1

Если вам нужно больше кода, дайте мне знать.

Весь код находится здесь: https://github.com/rTiRe/tours_manager. Папка с инициализированным приложением django: manager

Я предполагаю, что ошибка заключается в том, что тесты изначально проверяют весь мой код, и он обращается к таблицам, которые еще не были созданы, но я понятия не имею, как это исправить :(

).

Извините за мой английский, я все еще часто пользуюсь переводчиком.

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