1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Django 3.0.2 models.pyをモデルクラス毎にファイル分割する

Last updated at Posted at 2020-01-31

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'
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?