「the database needs something to populate existing rows」というエラー


migrateしようとしたらエラーが出て、
$ python manage.py migrate
No migrations to apply.
Your models have changes that are not yet reflected in a migration, and so won't be applied.
Run 'manage.py makemigrations' to make new migrations, and then re-run 'manage.py migrate' to apply them.

makemigrationsしようとしたら、
$ python manage.py makemigrations appname
You are trying to add a non-nullable field 'user' to field without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows)
2) Quit, and let me add a default in models.py

という感じのエラーに遭遇する。

適当に入れても良いのだけれど、一度デーベタベース(db.sqlite3など)や、アプリ直下にあるmigrationsのディレクトリを削除してから、
$ python manage.py makemigrations appname
$ python manage.py migrate

をすると、エラーが解消することがあります。

また、データを消したら、ログインユーザも消されているので注意。
$ python manage.py createsuperuser
をして新しくユーザ作成すればOK。