Python django - исключить класс из makemigrations
Допустим, у меня есть класс:
class A(models.Model, GrandparentClassSharedByAllClasses):
value = models.CharField(max_length=2000, blank=False, null=False)
def __str__(self):
return self.value
class Meta:
verbose_name = _('test')
verbose_name_plural = _('tests')
могу ли я как-то исключить его из makemigration/migrations?
Зачем мне это нужно? -> Класс A является одним из многих классов, все остальные сохраняют объекты в БД. Класс A должен обладать той же функциональностью, что и другие классы, поэтому его можно использовать в том же конвейере, но не сохранять в БД.
Если вы хотите, чтобы это была AbstractModel, то поля из нее добавляются в миграцию дочерних моделей, как:
class A(models.Model):
value = models.CharField(max_length=2000, blank=False, null=False)
def __str__(self):
return self.value
class Meta:
verbose_name = _('test')
verbose_name_plural = _('tests')
abstract = True
class B(A):
name = models.CharField(max_lenght=123)
Тогда ваша модель B будет храниться в db с полями:
id
value
name
Есть пример в Django docs. Класс A не будет перенесен в базу данных. Но если у вас есть унаследованная база данных (таблицы существуют в базе данных и вы не хотите их менять), вы можете создать свои модели вручную с помощью мета menaged=False
, как написал @Ezon Zaho, или вы можете выполнить:
python manage.py inspectdb
Который вернет модельный список существующих таблиц в базе данных. Вам нужно не забыть добавить эту базу данных в ваш settings.py, как описано здесь django docs