Django - Как создать и перенести две таблицы для разработки и производства в одну базу данных? (префикс впереди при запуске от имени dev)

Я пытаюсь иметь две таблицы в одной базе данных, как показано ниже, на основе среды разработки и производства.

  • разработка dev_my_comments
  • производство my_comments

Я пробовал использовать переменную среды при объявлении таблицы, как показано ниже

class Data_Comments(models.Model):
    class Status(models.IntegerChoices):
        GENERAL = 0
        YELLOW = 1
        RED = 2
    ord_no = models.ForeignKey(Data_Import, on_delete=models.CASCADE, related_name='comments')
    comment = models.CharField(max_length=500, null=True)
    strike_comment_type =  models.IntegerField(choices=Status.choices, default=0)
    strike_date = models.DateTimeField(auto_now=True, blank=True)
    updated_by = models.ForeignKey(User, on_delete=models.PROTECT, related_name='comments_user')

    class Meta:
        db_table = 'my_comments' if settings.ENV_TYPE == 'PRO' else 'dev_my_comments'
        app_label = "my_app"

при использовании этой опции, миграции просто переименовывают существующие таблицы, а не создают новые... (хотелось иметь обе таблицы и мигрировать изменения в обеих таблицах)

есть ли что-то, чего мне не хватает, чтобы это работало?

Я не думаю, что это хорошая идея. В любом случае вы можете передать db_table как константу, и django будет использовать переменную для миграций.

db_table = TABLE_NAME

примечание* вы не можете изменить его после запуска migrate tho.

Не думаю, что это сработает... потому что Django создаст файлы миграции и значение для db_table будет присвоено dev_my_comments. И ваш продакшн будет иметь dev_my_comments в качестве имени таблицы.

Я не видел такого шаблона для именования таблиц, есть ли какая-то причина, по которой вы должны разделять БД, но называть таблицу по-разному между dev & prod?

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