【发布时间】:2023-03-04 01:29:01
【问题描述】:
按照this 指南,我可以通过调用python main.py 来使用具有以下文件结构的Django 之外的模型。
├── data
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ └── models.py
├── main.py
├── manage.py
└── settings.py
main.py 看起来像这样:
import os, django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
django.setup()
from data.models import Foo, Bar #...
print(Foo.objects.all()) #this works fine
我想做的是把它变成一个名为db的“包”,看起来像这样:
├── data
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ └── models.py
├── __init__.py
├── manage.py
└── settings.py
在db 包的__init__.py 中,我想这样做:
import os, django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
django.setup()
from data.models import Foo, Bar # ...
from django.db import connection
__all__ = [
'connection',
'Foo',
'Bar',
#...
]
所以我可以像这样从test.py(与db在同一目录中)调用db包:
import db
print(db.Foo.objects.all()) #this throws an error "no module named data"
或者像这样:
from db import Foo
print(Foo.objects.all()) # this throws an error "no module named settings"
有没有一种方法可以使用 Django 的模型而无需调用:
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'settings')
django.setup()
在每个使用模型的页面上?
我在这里错过了什么?
【问题讨论】:
标签: python django python-3.x django-models