Добрый день! Проблема с миграциями и запросами действительно может возникнуть, если таблицы ещё не существуют, а запросы к ним уже происходят.
Прямую проверку существования таблицы можно выполнить через метод django.db.connection.introspection.table_names(), который возвращает список всех таблиц базы данных. Это позволит вам избежать излишней ручной работы с соединениями и подключениями.
from django.db import connection
def options_general_exists():
tables = connection.introspection.table_names()
if 'yourapp_general' in tables:
return General.objects.filter(id='-1').first()
return None
data = {
'menu': Menu,
'options_general': options_general_exists(),
}
Лучший вариант — использовать introspection API от Django для проверки существования таблиц, так как это встроенный и безопасный способ для работы с базой данных без необходимости явно подключаться к ней через Python.