前提・実現したいこと
稼働中の既存DBに、Foreignkey(入力必須)のフィールドを追加して稼働させたい
###行ったこと
models.pyにCategoryのフィールドを追加しmakemigrationsを実行。下記メッセージが出たので、
1) Provide a one-off default now (will be set on all existing rows with a null value for this column) 2) Quit, and let me add a default in models.py
1を選択肢、適当に"xxx"を値として追加し実行
続けてmigrateを実行したところ下記エラーが発生。
ValueError: invalid literal for int() with base 10: 'xxx'
###修正に当たり試したこと
過去のマイグレーションファイルを削除し、改めてmakemigrationsを実行の上、
python manage.py migrate --fake-initialを実行、
サーバーを立ち上げてページを開こうとすると下記エラーが発生
(1054, "Unknown column 'contents_article.category_id' in 'field list'")
同じく過去のマイグレーションファイルを削除し、改めてmakemigrationsを実行の上、
python manage.py migrateを実行した時点で下記エラーが発生。
MySQLdb._exceptions.OperationalError: (1050, "Table 'contents_category' already exists")
###解決に向けてと、質問したいこと。
色々操作しすぎて、正直何が問題なのかよくわからなくなっています。
手順を踏めば後からフィールドを追加することは可能だったのでしょうか?
また可能であればここから修正する事は可能でしょうか?
何か解決に向けてアドバイス頂ければ幸いです。
該当のソースコード
class Category(models.Model): """カテゴリ""" category_name = models.CharField( verbose_name="カテゴリー名", max_length=255 ) created_at = models.DateTimeField( verbose_name='登録日', default=timezone.now, # auto_now_add=True ) def __str__(self): return self.category_name class Article(models.Model): """記事""" title = models.CharField( verbose_name="タイトル", max_length=255) category = models.ForeignKey ( Category, default="その他", verbose_name="かてごり", on_delete=models.PROTECT, blank=False,) def __str__(self): return self.title
補足情報(FW/ツールのバージョンなど)
python3.6
Django2.2
MySQL8.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/20 02:44
2020/05/27 02:45