startappコマンドで初期に作成されるmodels.pyをモデルのクラス毎にファイル分割する。
前回やったときと__init__.pyが違ったような感じがしたのでメモ (気のせいかもしれない)
#バージョン
Python 3.7.6
Django 3.0.2
#手順
1.startappコマンドで作成したディレクトリ内にmodelsディレクトリを作成する。
2.作成したmodelsディレクトリ内に__init__.pyを作成する。
models/__init__.py
# from topic で読み込めていたはず、.topicに変更して.を明示しないとダメ
from .topic import Topic
# from アプリ名.models.topic import Topic (こっちも可)
3.作成したmodelsディレクトリ内にモデル名.pyを作成する。
models/topic.py
# こっちは普段通りなので適当
from django.db import models
class Topic(models.Model):
topic_id = models.AutoField(primary_key=True,)
class Meta:
indexes = [
models.Index(fields=['topic_id'], name='topic_topic_id_index'),
]
def __str__(self):
#エラー内容
__init__.pyの記述をミスした場合のエラーメッセージ
models/__init__.py
from topic import Topic
python manage.py makemigrations
# 省略
ModuleNotFoundError: No module named 'topic'