我是Django休息框架的新手,我正在将它们用于我们的一个项目。我当前的目录结构看起来像
project
app
__init__.py
migrations
utils
__init__.py
helpers.py
utils.py
core
datastructures.py
apps.py
models.py
serializers.py
views.py
project
__init__.py
settings.py
urls.py
wsgi.py
manage.py
上面的utils目录包含访问和修改数据库的自定义代码,因此需要使用models.py
中的模型。
核心目录包含app的逻辑,该逻辑将使用utils.py
和helpers.py
中定义的函数。
所以我需要从helpers.py
中的父目录导入一个文件。我尝试以下方式 -
from ..models import model1,model2.....
预计这会将python 3中的经典导入错误称为ImportError: attempted relative import with no known parent package
我也试过了 -
from project.app.models import model1,model2,...
这也会引发错误 -
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
鉴于以上所有内容(utils需要使用模型和核心需要使用utils),我觉得我很乱!
我应该遵循什么样的目录结构?这些导入将如何运作?
答案 0 :(得分:0)
public class MyClass {
Emp e=new Emp();
的第二种方法是正确的。但是进口不应该在模块级别。
这是Django的做事方式。应用程序需要几秒钟才能连接到应用程序注册表,在此期间所有其他导入(如模型)都无效。因此,您应该直接导入函数中的模型,而不是模块级别。
答案 1 :(得分:0)
您是否在1
----------------------------------------------------------------------------
SQL0100W No row was found for FETCH, UPDATE or DELETE; or the result of
a query is an empty table.
Explanation:
One of the following conditions is true:
* No row was found that meets the search conditions specified in an
UPDATE or DELETE statement.
* The result of a SELECT statement was an empty table.
* A FETCH statement was executed when the cursor was positioned after
the last row of the result table.
* The result of the SELECT used in an INSERT statement is empty.
No data was retrieved, updated, or deleted.
User response:
No action is required. Processing can continue.
sqlcode: +100
sqlstate: 02000
1 record(s) selected.
注册了该应用?这应该在INSTALLED_APPS
。
<强> apps.py 强>
settings.py
<强> settings.py 强>
from rock_n_roll.apps import RockNRollConfig
class JazzManoucheConfig(RockNRollConfig):
verbose_name = "Jazz Manouche"
答案 2 :(得分:0)
解决utils对模型需求的一种方法是使用apps.get_model
。
from django.apps import apps
my_model = apps.get_model(app_label='app', model_name='MyModel')