Я прочитал, что имя таблицы в Django можно настроить, используя Meta Options. Мне интересно, как использовать параметр db_table, чтобы продолжать использовать имя приложения, но слегка модифицировать имя модели без жесткого кодирования имени приложения.Изменить имя таблицы в Django
Например, из учебника Django имя приложения - «опросы», а имя модели - «опрос». Допустим, я хочу, чтобы таблица называлась «polls_mypoll» вместо «polls_poll». Вот то, что я пытался, но внешний класс не может получить доступ (опрос не определен)
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Meta:
db_table = "%s_%s" % (Poll._meta.app_label, "mypoll")
Точно так же, если я хотел определить db_table явно, чтобы быть просто polls_poll по умолчанию? Я знаю, что могу просто оставить класс Meta полностью, и это имя по умолчанию будет использоваться, но что, если я хочу быть откровенным об этом?
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Meta:
db_table = "%s_%s" % (Poll._meta.app_label, Poll._meta.model_name)
Это не работает, потому что Poll не определен внутри Meta.
Это не значит, что опрос должен быть объявлен _inside_ Meta доступным; он просто не был полностью проанализирован тем временем, когда Meta анализируется. – XORcist