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?