[Django学习]如何得到一个App

转载自limodou的学习记录

[Django学习]如何得到一个App

这个问题好象很简单,最简单的就是:

from myproj.apps.WhatApp import WhatModel

一般的例子也是这么写的。这里需要注意的是,我们可能把myproj的父目录设置到PythonPath中去了,因此,可以从myproj的父目录开始引用一个包,因此上面没有问题。

如果有人问,如果我不想使用myproj怎么办呢?因为这样与myproj目录关联太死了。我想的一个办法是,将myproj设置到PythonPath中去,这样上面的引用改为:

from apps.WhatApp import WhatModel

这样完全没有project目录了。

今天在 django 的邮件列表又看到一个方法,可能更好:

from django.db.models.loading import get_app
desired_app = get_app(‘desired_app’)
from desired_app.models import SomeModel

这是使用 django 提供的 get_app 的方法来实现的。因此这样就不需要考虑目录结构,完全是一种逻辑上的关系了。这种方法不错。当然除了 get_app 之外,如果是为了导入 model 还可以有其它的方法来更方便导入,如:

from django.db.models.loading import get_model
SomeModel = get_model(app_label, model_label)

你可能感兴趣的:(django,APP,引用)