我收到此错误:
无法导入名称提供者
这是我的模型(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
我不明白为什么会收到此错误,只有在尝试运行服务器时才会出现此错误,请提出任何建议。谢谢!
答案 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)
,但不能完全理解为什么导入正确的话会出现此错误。 为什么是循环导入错误?..谢谢.. !!