Django tworzy migrację dla każdej nowo dodanej tabeli w Twojej aplikacji, niezależnie od tego, czy jest to model zarządzany, czy nie. Istnieje jednak bardzo ważna i subtelna różnica, gdy używasz managed=False
ustawienie. Wynikająca z tego migracja to fikcyjny wpis. W ogóle nie wykonuje żadnego SQL.
Aby to potwierdzić, dodaj nowy model niezarządzany
class Dummy(models.Model):
something = models.IntegerField()
class Meta:
managed = False
teraz kiedy robisz makemigrations
po którym następuje sqlimigrate *myapp* *migration_number*
zobaczysz, że nie generuje żadnego sql.
Jeśli z drugiej strony okaże się, że Django próbuje stworzyć dla ciebie tabelę, oznacza to zwykle, że ten sam model istniał wcześniej, ale w czasie, gdy model był zarządzany. Aby to potwierdzić, przeszukaj swoje migrations
folder dla VirtualTotal
który jest nazwą danego modelu.