【问题标题】:Django circular import and model issueDjango循环导入和模型问题
【发布时间】:2017-05-27 02:16:10
【问题描述】:

我在两个不同的应用程序中有两个 Django models.py

processor app models.py

from address.models import Address
...defining clasess
class Displayble(models.Model):
 # It has no DB fields

address app models.py

from processor.models import Displayable
class Address(models.Model, Displayble):
...some fields, stored in DB

Dispalyble 类移动到另一个文件是解决此依赖关系的唯一选择吗?

【问题讨论】:

  • 您没有提供足够的信息来说明,因为我们不知道您如何在您的processor/models.py 中使用AddressDisplayble
  • 我同意阿拉斯代尔的观点。您可能正在导入模型来扩展一个类,或者您可能在方法或函数中使用该类。向我们提供更详细的代码,我们可能会为您提供帮助。

标签: python django import dependencies circular-dependency


【解决方案1】:

使用 django 的 apps.get_model 导入 Address 模型。 https://docs.djangoproject.com/en/1.11/ref/applications/#django.apps.apps.get_model.

在你的processor app models.py 替换

from address.models import Address
...defining clasess
class Displayble(models.Model):
# It has no DB fields

from django.apps import apps
Address = apps.get_model(app_label='address', model_name='Address')
....go ahead and use Address as though imported
class Displayable(models.Model):
...

【讨论】:

  • 哇,绝妙的把戏。在我找到这个答案之前,goona 是否将我所有的模型都转移到了一个虚拟应用程序中。
  • 当我尝试这样做时,我得到django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet. 我在互联网上看到的每个答案都说我应该通过将模型的路径用作外键关系中的字符串来解决这个问题,但是我不想在这里使用外键关系...
猜你喜欢
  • 2020-07-11
  • 1970-01-01
  • 2011-08-06
  • 1970-01-01
  • 2021-04-06
  • 2014-12-10
  • 2011-05-21
相关资源
最近更新 更多