Django нет такой таблицы: Fligts_country при попытке миграции модели приложения с помощью внешнего ключа

Intro

Здравствуйте, прежде всего, заранее спасибо за помощь. Я изучаю фреймворк Django и у меня возникли проблемы при попытке создать простое отношение между двумя таблицами в моей модели. Я запускаю django и mysql в docker в двух отдельных контейнерах, созданных с помощью файла docker-compose (код приведен ниже), и пока мне не удается создать таблицы (миграции).

Проблема

Когда я выполняю команду:
python manage.py migrate --database=mariadb

В результате я получаю:

django.db.utils.OperationalError: no such table: Fligts_country

В других сообщениях, похожих на это (Django - no such table exception, например) я вижу, что общим решением является удаление папки pycache и миграций, но это не работает для меня, и я бьюсь уже некоторое время...

Желаемое решение

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

Мой код на данный момент

Docker-compose.yml

version: '3'

services:

    travel-crawler:
        restart: always
        container_name : travel-crawler
        build: ./Crawler
        tty: true
        ports: 
            - '9005:8080'

        volumes:

          - type: bind
            source : E:\python-code\Traveler\Crawler
            target : /home/shared-files/

    db-traveler:
        image: mariadb
        restart: always
        container_name : db-traveler
        ports: 
            - '3306:3306'

        environment:
            MARIADB_ROOT_PASSWORD: pwd
            MARIADB_DATABASE : travel-crawler
            MARIADB_USER : user
            MARIADB_PASSWORD : password
        #avoid error for STRICT_TRANS_TABLES (error was thrown if no default value was assigned to primary key)
        command: mysqld --sql_mode=""
        #command: python manage.py runserver 0.0.0.0:8000
        expose:
            - '3306:3306'
        volumes:
          # persist data files into `datadir` volume managed by docker
          - dbdatavol:/var/lib/mysql
          # bind-mount any sql files that should be run while initializing
          - ./tables.sql:/docker-entrypoint-initdb.d/schema.sql

volumes:
    dbdatavol:
networks:
    net:
        ipam:
            driver: default
            config:
                - subnet: 212.172.1.0/30
    host:
        name: host
        external: true

Определение базы данных в settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    },
    'mariadb': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'travel-crawler',
        'USER' : 'user',
        'PASSWORD' : 'password',
        'HOST' : 'db-traveler',
        'PORT' : '3306'
    }
}

app/models.py

from django.db import models
from django.contrib import auth

from django.core.validators import MaxValueValidator, MinValueValidator
# Create your models here.

class Country(models.Model):
    name = models.CharField(help_text = 'Name of the country', max_length = 50)
    code = models.CharField(help_text = 'alpha2_code', max_length = 4)
    code_2 = models.CharField(help_text = 'alpha2_code', max_length = 4)

class ProxyServer(models.Model):
    """
    ProxyServer description for VPN connections
    """

    host = models.CharField(help_text = 'Name of the host', max_length = 30)
    proxy = models.IntegerField(help_text = 'Port to conenct to', validators=[MaxValueValidator(65535), MinValueValidator(1)])
    #country = models.CharField(help_text = 'Country Name')
    
    country = models.ForeignKey(Country, choices=Country.objects.values_list('name', flat=True), on_delete = models.DO_NOTHING)
Вернуться на верх