Почему я получаю "OperationalError: No Such Table" в Django
Я пытаюсь хранить значения в базе данных sqlite и извлекать их из базы данных для использования в моем проекте с помощью моделей django. В моем проекте django есть два приложения: 'main' и 'apply'. Я запустил migrate и makemigrations для обоих. Когда я сохраняю значения в полях модели для 'main', все работает нормально. Однако, когда я пытаюсь сохранить значения в полях модели для 'apply', я всегда получаю "utils.OperationalError: No Such Table apply_(model name)" Я установил другую базу данных для моих моделей "apply", а модели "main" используют базу данных по умолчанию.
Релевантные настройки.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
},
'apply': {
'NAME': 'apply_data',
'ENGINE': 'django.db.backends.sqlite3'
},
}
DATABASE_ROUTERS = ['django_webpage_project.routers.ApplyRouter']
projectname/routers.py
class ApplyRouter:
"""
A router to control all database operations on models in the
auth and contenttypes applications.
"""
route_app_labels = {'apply',}
def db_for_read(self, model, **hints):
"""
Attempts to read auth and contenttypes models go to auth_db.
"""
if model._meta.app_label in self.route_app_labels:
return 'apply'
return None
def db_for_write(self, model, **hints):
"""
Attempts to write auth and contenttypes models go to auth_db.
"""
if model._meta.app_label in self.route_app_labels:
return 'apply'
return None
def allow_relation(self, obj1, obj2, **hints):
"""
Allow relations if a model in the auth or contenttypes apps is
involved.
"""
if (
obj1._meta.app_label in self.route_app_labels or
obj2._meta.app_label in self.route_app_labels
):
return True
return None
def allow_migrate(self, db, app_label, model_name=None, **hints):
"""
Make sure the auth and contenttypes apps only appear in the
'auth_db' database.
"""
if app_label in self.route_app_labels:
return db == 'apply'
return None
main/models
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=15)
last_name = models.CharField(max_length=6)
#age = models.IntegerField(default=0)
def __str__(self):
return f'{self.first_name} {self.last_name}'
apply/models
from django.db import models
# Create your models here.
class Frye(models.Model):
first_name = models.CharField(max_length=15)
middle_name = models.CharField(max_length=15)
last_name = models.CharField(max_length=15)
age = models.IntegerField()
height = models.CharField(max_length=9)
occupation = models.CharField(max_length=30)
def __str__(self):
return f'{self.first_name} {self.middle_name} {self.last_name}
{self.age} {self.height} {self.occupation}'
class Homer(models.Model):
first_name = models.CharField(max_length=15)
middle_name = models.CharField(max_length=15)
last_name = models.CharField(max_length=15)
age = models.IntegerField()
height = models.CharField(max_length=9)
occupation = models.CharField(max_length=30)
def __str__(self):
return f'{self.first_name} {self.middle_name} {self.last_name}
{self.age} {self.height} {self.occupation}'
class Holt(models.Model):
first_name = models.CharField(max_length=15)
middle_name = models.CharField(max_length=15)
last_name = models.CharField(max_length=15)
age = models.IntegerField()
height = models.CharField(max_length=9)
occupation = models.CharField(max_length=30)
def __str__(self):
return f'{self.first_name} {self.middle_name} {self.last_name}
{self.age} {self.height} {self.occupation}'
Спасибо за ваше время