python Django框架出现 import error 错误,can't import user.models.Userinfo 等模型类的问题

1.出现问题原因一:

           在settints.py 文件中,

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'user.apps.UserConfig',
    'shop.apps.ShopConfig',
    'goods.apps.GoodsConfig',
]

在注册app时没有写逗号(,)导致问题出现

 

2.出现问题原因二:

          由于在模型类的一对一,多对多,一对多映射关系中,出现了循环导入模型类的问题,比如在goods模块导入了shop模块的shopinfo,在shop模块又导入了goods模块的goodsSKU,因此在外键关联中如果还是正常写的话,就会出现import error 错误

 goods_sku = models.ForeignKey(GoodsSKU, verbose_name='商品SKU',on_delete=models.CASCADE)

shop_info = models.ForeignKey(ShopInfo, verbose_name='所属店铺', on_delete=models.CASCADE)





 File "/home/tarena/django-project/fruit/apps/shop/models.py", line 7, in 
    from goods.models import GoodsSKU
  File "/home/tarena/django-project/fruit/apps/goods/models.py", line 6, in 
    from shop.models import ShopInfo
ImportError: cannot import name 'ShopInfo'

             这样运行时,就会出错,因此只需要改goods_sku的外键导入关系或者shop_info的外键导入关系让其没有循环导入

即可.

 goods_sku = models.ForeignKey('goods.GoodsSKU', verbose_name='商品SKU',on_delete=models.CASCADE)

           这种写法是在settings里面加入了系统路径,并且把所有的apps的代码都去掉了,因为在系统中已经添加了这条路径.

sys.path.insert(0,os.path.join(BASE_DIR,'apps'))

          也可以不在系统路径中加入sys.path,只需要将apps当做一个包来处理,各路径加入apps前缀路径即可,主要问题出现

    就是循环导入的原因所致.

你可能感兴趣的:(python Django框架出现 import error 错误,can't import user.models.Userinfo 等模型类的问题)