Just an update for those who’ll encounter this question (from Google or whatever else)…
Currently Django has a simple “proper way” to define model without managing database tables:
Options.managed
Defaults to
True
, meaning Django will create the appropriate database tables insyncdb
and remove them as part of areset
management command. That is, Django manages the database tables’ lifecycles.If
False
, no database table creation or deletion operations will be performed for this model. This is useful if the model represents an existing table or a database view that has been created by some other means. This is the only difference whenmanaged
isFalse
. All other aspects of model handling are exactly the same as normal.