Как использовать схему с переменной для передачи через другую среду
Я пытаюсь изменить название схемы, потому что я использую другую среду для своего проекта. Поэтому я делаю это в своем models.py:
# from django.contrib.auth.models import AbstractUser
from django.contrib.auth.models import AbstractUser
#Pour plus d'information sur le fonctionnement des models : https://docs.djangoproject.com/fr/5.1/topics/db/models/
from django.conf import settings
if settings.ENV == "DEV":
schema="applications_db"
elif settings.ENV == "VIP":
schema="applications_vip_db"
elif settings.ENV == "PROD":
schema="applications_prod_db"
class ApplicationDjango(models.Model):
a_name = models.CharField(max_length=100,verbose_name="Nom")
a_portail_name = models.CharField(max_length=100,verbose_name="Nom portail")
a_views_name = models.CharField(max_length=100,verbose_name="Views name")
a_url_home = models.CharField(max_length=100,verbose_name="Url home")
def __str__(self):
return self.a_name+"_"+self.a_portail_name
#class pour ajouter une contrainte d'unicité
class Meta:
managed= True
db_table = f'{schema}.\"ApplicationDjango\"'
я выполняю миграцию -> проблем нет
затем при переносе я получил эту ошибку:
./manage.py migrate Applications
Operations to perform:
Apply all migrations: Applications
Running migrations:
Applying Applications.0004_alter_applicationdjango_table_alter_user_table...Traceback (most recent call last):
File "/home/webadmin/.local/lib/python3.9/site-packages/django/db/backends/utils.py", line 87, in _execute
return self.cursor.execute(sql)
psycopg2.errors.SyntaxError: syntax error at or near "."
LINE 1: ...ons_applicationdjango" RENAME TO "applications_db"."Applicat...
^
я попробовал несколько способов, но это не сработало. Я надеюсь, что смогу изменить имя схемы:/
Спасибо за помощь
В вашем сообщении об ошибке указано, что проблема вызвана обратной косой чертой в имени таблицы вашей базы данных. Похоже, вы пытаетесь избежать двойных кавычек. Поэтому вам следует переименовать db_table = f'{schema}.\"ApplicationDjango\"' в:
db_table = f"{schema}.'ApplicationDjango'"
Избавьтесь от обратной косой черты и заключите значение db_table в двойные кавычки и посмотрите, решит ли это вашу проблему.