【问题标题】:Django/Python imports from different django projects with the same app name and same model nameDjango/Python 从具有相同应用程序名称和相同模型名称的不同 django 项目导入
【发布时间】:2012-12-26 19:34:37
【问题描述】:

我的django项目结构如下:

主要/

project_A/
 apps/
    account
       models.py
       views.py
       urls.py
       __init__.py
    purchase
       models.py
       views.py
       urls.py
       __init__.py
   …..

project_B/
 apps/
    account
      models.py
      views.py
      urls.py
      __init__.py
    signups
      models.py
      views.py
      urls.py
      __init__.py
   ….

在我的 main/workspace 下,我有两个单独的 django 项目,分别称为“Project_A”和“Project_B”。每个项目都有自己的一组应用程序。每个项目都有一个名为“帐户”的应用程序。 (在不同的 Django 项目中使用相同的应用程序名称)。我需要让两个项目相互交谈,为此我需要在 Project_A 中的“购买”应用程序的 views.py 中执行以下导入

从 project_B.apps.account.models 导入帐户

(这里Account是account app的models.py中的model。两个不同django项目中的model和app name相同)

但是,它看起来像基于导入的工作方式;在 Project_A 中,上述导入基本上解析为:

from account.models import Account(它从models.py解析为Project_A的帐户应用程序的Account模型。)但是,我需要从Project_B导入。我怎样才能让它工作?

Django 版本:1.3 Python 版本 2.7.2 Ubuntu 12.04

【问题讨论】:

  • WWWWWHHHHYYYYYY??????!!!!!!!
  • 我需要从Project_A中的Project_B查询账户模型中的一些字段;因此,我需要从 Project A 中的 Project_B 导入帐户模型。
  • 老实说,您应该将所有应用程序放在一个项目中,并赋予它们不同的名称。你的设置很奇怪,看起来不是一个好的概念。
  • Project_A 供卖家使用,Project_B 供买家使用。将项目分开使用户管理变得非常容易,因为我不必跟踪用户是买家还是卖家(因为它们在单独的项目中有自己的单独“帐户”。
  • 不过,这不是一个好主意。您必须复制项目设置,并且不能在同一台服务器上运行这两个项目。正如您从上面的问题中看到的那样,这不是 Django 项目应该工作的方式。将所有内容放在一个项目中,并找到与买卖双方打交道的其他方式。

标签: django importerror


【解决方案1】:

尝试通过 Python 关键字 as 提供别名。看看here

例子:

from project_B.apps.account.models import Account as Account_b

【讨论】:

  • 由于导入首先在当前目录中查找,并且 django 的 get_model() 从项目 A 的帐户应用程序返回帐户模型,因此上述解决方案对我不起作用。我尝试了相对导入以及: from ..Project_B.apps.account.models import Account 这也不起作用。
猜你喜欢
  • 1970-01-01
  • 2020-01-26
  • 2017-03-03
  • 2020-04-04
  • 1970-01-01
  • 2021-09-03
  • 1970-01-01
  • 2019-12-20
  • 1970-01-01
相关资源
最近更新 更多