2017-10-25 20 views
0

私のプロジェクトのディレクトリです:apps/goods/models.py 'apps.goods.models' appsはパッケージではありませんか?

apps/ 
    goods/ 
     models.py 
     views.py 
     base.py 
    trades/ 
    users/ 
    __init__.py 

アプリケーション/雑貨/ base.py

from django.views.generic.base import View 

from apps.goods.models import Goods 


class GoodsListView(View): 
    def get(self, request): 
     json_list = [] 
     goods = Goods.objects.all()[:10] 
     for good in goods: 
      # json_dict = {} 
      # json_dict['name'] = good.name 
      # json_dict['category'] = good.category.name 
      # json_dict['market_price'] = good.market_price 
      # json_dict['add_time'] = good.add_time 
      # json_list.append(json_dict) 

      from django.forms.models import model_to_dict 

      for good in goods: 
       json_dict = model_to_dict(good) 
       json_list.append(json_dict) 

      from django.http import HttpResponse 
      import json 
      return HttpResponse(json.dumps(json_list), content_type='application/json') 

私はデバッグbase.pyだデータを得るが、エラーを取得できません:

from apps.goods.models import Goods 
ModuleNotFoundError: No module named 'apps.goods'; 'apps' is not a package 

、「apps.goods.models」の「apps」を削除すると、エラーが表示されます。

from goods.models import Goods 
ModuleNotFoundError: No module named 'goods' 

ENV:

pycharm-2017.2 

django-1.11.6 

なぜエラーが出ますか?

+0

がhttpsをパッケージ化するために__init__.pyファイルを追加インポート:// stackoverflow.com/questions/448271/what-is-init-py-for – Vermus

+0

私のアプリ/ include __init__.py、こちらをご覧くださいhttp://oo8h584mv.bkt.clouddn.com/%E6%8D%95%E8%8E %B7.PNG – mmy

+1

アプリではなく、商品パッケージからインポートするには__init.py__を追加する商品パッケージを作成する必要があります – Vermus

答えて

0

他のコメントと同様に、パッケージとみなすべきフォルダにinitファイルを作成する必要があります。しかし、__init__.pyと呼ばれています。これらのファイルのいずれかがappsにある場合は、apps/goodsにあることを確認してください。

あなたはまだ同じ問題を抱えている場合はapps上記のフォルダは.modelsがモデルの前に製品を(見てインポートするだけでから

+0

ths isすべてのディレクトリhttp://oo8hp4ueg.bkt.clouddn.com/%E6%8D%95%E8%8E%B72.PNG – mmy

0

使用をロードされている。すなわち、ジャンゴでのご使用の構成が正しいことを確認してください「」 - それはモジュールが現在のフォルダからのものであることを意味します)。base.pyとmodels.pyは同じフォルダ(同じアプリ)にあるので、どのアプリからモデルをインポートする必要はありません。このように単純に含めるだけです。

他のアプリからモデルをインポートする場合は、アプリをパッケージ化する必要があります。
商品アプリのフォルダに__init__.pyを追加します。
構造は次のようになります。はgoods.modelsから使用より

apps/ 
    goods/ 
     __init__.py  
     models.py 
     views.py 
     base.py 
    trades/ 
    users/ 
    __init__.py 

apps.goods.models輸入品から製品または

+0

from.models import goodsエラー:__ main __。modules、main is not package – mmy

+0

私のモデルを表示する.pyコード。そして、物品ではなく物品 - クラス(ビッグG)を輸入する必要があるので注意してください。 – FirePower

+0

apps/goods/models.py – mmy

関連する問題