无法导入X模型

时间:2018-11-08 16:00:39

标签: django django-models

我收到此错误:

  

无法导入名称提供者

这是我的模型(products / models.py):

from __future__ import unicode_literals

from django.db import models
from provider.models import Provider

class Product(models.Model):

    name = models.CharField(max_length=100)
    image = models.FileField(upload_to='products/', null=True)
    detail = models.CharField(max_length=100)
    provider = models.ForeignKey(Provider, on_delete=models.CASCADE)
   ...
   ...

这是我来自提供商应用程序的模型:

from products.models import Product
    class Provider(models.Model):

        name = models.CharField(max_length=100)
        rut=models.CharField(max_length=13, default='9999999999')
        addres = models.CharField(max_length=100)
        contact_name = models.CharField(max_length=100)

    class Catalogue(models.Model):
      product = models.ForeignKey(Product, on_delete=models.CASCADE)
      provider = models.ForeignKey(Provider, on_delete=models.CASCADE)
      spetial_price = models.Decimalfield()
      ....
      ....

这是我的跟踪错误:

Traceback (most recent call last):
  File "/usr/lib64/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/django/core/management/commands/runserver.py", line 109, in inner_run
    autoreload.raise_last_exception()
  File "/usr/lib64/python2.7/site-packages/django/utils/autoreload.py", line 249, in raise_last_exception
    six.reraise(*_exception)
  File "/usr/lib64/python2.7/site-packages/django/utils/autoreload.py", line 226, in wrapper
    fn(*args, **kwargs)
  File "/usr/lib64/python2.7/site-packages/django/__init__.py", line 18, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/usr/lib64/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models(all_models)
  File "/usr/lib64/python2.7/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/usr/lib64/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/root/inventarios/provider/models.py", line 5, in <module>
    from products.models import Product
  File "/root/inventarios/products/models.py", line 4, in <module>
    from provider.models import Provider

我不明白为什么会收到此错误,只有在尝试运行服务器时才会出现此错误,请提出任何建议。谢谢!

2 个答案:

答案 0 :(得分:0)

如果您创建了一个名为provider的文件,并将models.py文件放入其中,则应创建一个__init__.py文件,以便将其识别为可以导入的模块。

您尝试过吗?您的__init__.py可以是空白文件

答案 1 :(得分:0)

感谢大家的回答,但我的错误是:

  

圆形导入错误   我解决了我的问题,改变了这一点:

 class Catalogue(models.Model):
      product = models.ForeignKey(Product, on_delete=models.CASCADE)
      provider = models.ForeignKey(Provider, on_delete=models.CASCADE)

由此:

 class Catalogue(models.Model):
      product = models.ForeignKey('products.Product', on_delete=models.CASCADE)
      provider = models.ForeignKey(Provider, on_delete=models.CASCADE)

,但不能完全理解为什么导入正确的话会出现此错误。 为什么是循环导入错误?..谢谢.. !!