Reputation: 1037
I have an app with an initial data fixture on Django 1.8. When I run manage.py migrate
, I get the following output:
Operations to perform:
Synchronize unmigrated apps: food, locations, messages, staticfiles, core
Apply all migrations: auth, sessions, admin, contenttypes
Synchronizing apps without migrations:
Creating tables...
Running deferred SQL...
Installing custom SQL...
/home/myuser/venv/lib/python3.4/site-packages/django/core/management/commands/loaddata.py:229: RemovedInDjango19Warning: initial_data fixtures are deprecated. Use data migrations instead.
RemovedInDjango19Warning
Installed 87 object(s) from 1 fixture(s)
Running migrations:
No migrations to apply.
So it seems like the fixture was installed, but not really - when I log in to my postgres user and run psql
and \dt
, no tables are listed (I make sure to connect to the database first with \c mydatabase
)! When trying to view the app in a browser, I get: ProgrammingError at / relation "locations_openinghours" does not exist
. (Which just happens to be the first table that the app tries to access).
Upvotes: 3
Views: 5938
Reputation: 658
You can try these steps to see if it resolves your problem:
django_migrations
table.python manage.py makemigrations <appname>
python manage.py migrate <appname>
In addition to the above you can try adding to each of your model classes the meta class setting managed = True
and app_label = <name of your app>
i.e.
class Food(models.Model):
class Meta:
app_label = "food"
managed = True
The rest of your class as you had it. Of course add this Meta for all your models. Make sure the app_label
is lower case like you have it in the INSTALLED_APPS
setting.
Upvotes: 2
Reputation: 1037
I solved it, but it was a silly issue. First, when running python manage.py makemigrations
for the first time, you should specify which app you're migrating for - so I used python manage.py makemigrations myapp
. Secondly, the way I've set up my project, manage.py
uses the dev settings by default, and this was writing to an SQLite database. I added the --settings=core.settings.production
flag, and it worked.
Upvotes: 1