

Webserverを立ち上げることなく（python3 manage.py runserverすることなく）、  
Djangoのデータベースの、ORマッピング機能とマイグレーション機能のみを利用したいのですが、つまずいています。  
django.setup()とモデルクラスを定義する順番があるようなのですが、解決方法を教えていただけないでしょうか？

【参考としたサイト】：<https://logixsquare.com/techblog/django_models_only/>

【やったこと】：  
# 仮想環境の作成/アクティベート  
python3 -m venv venv  
source venv/bin/activate  
# Djangoのインストール  
pip3 install django  
# Djangoプロジェクトの作成  
mkdir helloworldproject  
cd bookproject  
# Djangoアプリの作成（不要？）  
django-admin startproject hello  
# ./アプリ名/test.pyに、以下のコードを記載

【エラー内容】  
INSTALLED_APPSを変更し、モデルクラスを定義すると、以下のエラーが発生します。  
'hello.tests' does not contain a 'SampleModel' class.

[code]

    import sys
    
    # 初期設定
    sys.path.append('./helloworldproject')
    
    if __name__ == '__main__':
        from django.conf import settings
        settings.configure(
            DATABASES = {
                'default': {
                    'ENGINE': 'django.db.backends.sqlite3',
                    'NAME': './db.sqlite3',
                }
            },
            # INSTALLED_APPS=['hello.tests.SampleModel'] # ←ここと、以下SampleModelクラスのコメントアウトを外すとエラーとなる。
        )
    
        import django
        django.setup()
    
        # モデル定義
        # from django.db import models
        # class SampleModel(models.Model):
        #     title = models.CharField(max_length=100) # 列タイトル
        #     number = models.IntegerField() # 列ナンバー
    
[/code]


CC BY-SA 4.0
2022-07-04T13:44:18.317
89757
2022-07-09T20:02:07.120
35267
question
python3 django
DjangoのDBを、runserverなしで利用する方法について


解決しました。

以下を追加することで、INSTALLED_APPSに'hello.apps.HelloConfig'を指定できるようになりました。

[code]

    import sys
    sys.path.append('.')
    
[/code]

SampleModelクラスはmodels.pyに、記載し、makemigrations、migrateしました。

ありがとうございました。Closeします。


CC BY-SA 4.0
2022-07-09T16:01:09.670
89872
2022-07-09T20:02:07.120
2022-07-09T20:02:07.120
32986
35267
89757
answer