PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Django-Modell für eine Postgres-Ansicht

Django erstellt eine Migration für jede neu hinzugefügte Tabelle in Ihrer App, unabhängig davon, ob es sich um ein verwaltetes Modell handelt oder nicht. Es gibt jedoch einen sehr wichtigen und subtilen Unterschied, wenn Sie managed=False verwenden Einstellung. Die resultierende Migration ist ein Dummy-Eintrag. Es führt überhaupt kein SQL aus.

Um dies zu bestätigen, fügen Sie ein neues, nicht verwaltetes Modell hinzu

class Dummy(models.Model):
    something = models.IntegerField()

    class Meta:
       managed = False

jetzt, wenn Sie makemigrations durchführen gefolgt von sqlimigrate *myapp* *migration_number* Sie werden sehen, dass kein SQL erzeugt wird.

Wenn Sie andererseits feststellen, dass Django versucht, eine Tabelle für Sie zu erstellen, bedeutet dies normalerweise, dass Sie das gleiche Modell bereits früher hatten, aber zu dem Zeitpunkt, als das Modell verwaltet wurde. Um dies zu bestätigen, durchsuchen Sie Ihre migrations Ordner für VirtualTotal das ist der Name des betreffenden Modells.