Как использовать схему с переменной для передачи через другую среду

Я пытаюсь изменить название схемы, потому что я использую другую среду для своего проекта. Поэтому я делаю это в своем 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 в двойные кавычки и посмотрите, решит ли это вашу проблему.

Вернуться на верх