Имеется модель Options для всех настроек проекта. Имеется также модель General (общие настройки по типу название сайта, описание иконки, логотипы и бла бла бла), которая наследуется от Options.
Суть проблемы:
во вьюхе получаю,
например глобально, так
options_general = General.objects.filter(id='-1').first()
//далее кидаю в data и использую в функциях/классах представления
data = {
'menu' : Menu,
'options_general' : options_general,
}
и все бы хорошо, но, закинув проект на ubuntu, у которой «морда» в инет смотрит, не удается сделать миграцию, все крашиться ибо таблицы нет такой (логично).
можно, к примеру, сделать через функцию с проверкой:
def Options_General():
option = Options.objects.filter(option_name='options_general').first()
options_general = General.objects.filter(id='-1').first() if option else ''
return options_general
data = {
'menu' : Menu,
'options_general' : Options_General,
}
тогда все работает и миграция в том числе, но при таком раскладе вместо 5 квери запросов 29, что совсем не нравится...
пробовал использовать try / except, objects count, objects exists и другие варианты.
есть еще в голове вариант напрямую проверять через python:
from django.conf import settings
if settings.DEBUG:
import sqlite3
conn = sqlite3.connect('db.sqlite3')
cursor = connection.cursor()
.....
else:
import mariadb
import sys
try:
conn_params = {
...
но на сколько это правильно?
вытекающий вопрос: как все правильно это реализовать? Или корректно проверить таблицу в базе, чтоб запросов было помнимому и миграция не крашилась?