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

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