本サイトはdjangoで作成しています。
djangoの使用方法についてまとめています。
5393 views
djangoでmodelクラスを変更したら急に以下のメッセージが出力された。
sqlite3.OperationalError: no such table: テーブル名
よくわからないが、forms.pyクラスでエラーになったテーブルを見ている処理があるとエラーになるっぽい。
対処としてはforms.pyクラスをいったんコメントアウトして空っぽのソースに変える。
以下のWorkClassTable.objects.all()が悪さをしているようだった。
[form.py]
class TimeCardForm(forms.Form):
# 初期値の設定はViewで行う
date = forms.DateField(widget=forms.HiddenInput)
# AdminTimeWidgetはイマイチ使えないので自作する
in_time = forms.TimeField(widget=AdminTimeWidget)
off_time = forms.TimeField(widget=AdminTimeWidget, required=False)
records = WorkClassTable.objects.all()←←←←←←←これがダメっぽい
choice_list = []
for record in records:
choice_list.append((record.id, record.name))
print((record.id, record.name))
work_class_id = forms.ChoiceField(label='勤務区分',
widget=forms.Select,
choices=choice_list,
required=True)
がっつりコメントアウトする。
"""
class TimeCardForm(forms.Form):
# 初期値の設定はViewで行う
date = forms.DateField(widget=forms.HiddenInput)
# AdminTimeWidgetはイマイチ使えないので自作する
in_time = forms.TimeField(widget=AdminTimeWidget)
off_time = forms.TimeField(widget=AdminTimeWidget, required=False)
records = WorkClassTable.objects.all()←←←←←←←これがダメっぽい
choice_list = []
for record in records:
choice_list.append((record.id, record.name))
print((record.id, record.name))
work_class_id = forms.ChoiceField(label='勤務区分',
widget=forms.Select,
choices=choice_list,
required=True)
"""
コメントアウトした後、DBを再作成する。
python manage.py makemigrations
python manage.py migrate
でOK。DBが作成できたらforms.pyを元に戻せばOK。
成り行きでdjango使ってるけど、flaskに乗り換えようかなぁ…謎な動きが多すぎてしんどい。
Page 11 of 14.
マッスル
本サイトの作成者。
趣味:プログラム/水耕栽培/仮想通貨/激辛好き
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
仮想通貨はNEMが好き。
水耕栽培は激辛好きが高じて、キャロライナ・リーパーの栽培にチャレンジ中。
https://www.osumoi-stdio.com/pyarticle/