2016-07-10 1 views
0

私はapps.pyファイルに次のコードを持っている:AppConfigでinitスクリプトを実行している間にデータベースを作成できません。 django.db.utils.OperationalError:私のDjangoのアプリケーションにはこのようなテーブル

class NewsConfig(AppConfig): 
    name = 'app_news' 

    def ready(self): 
     super().ready() 
     from service.cache import cache 
     cache.init_cache() 

init_cache方法の目的は、Redisのキャッシュにデータベースからデータをロードすることです。コード:

def init_cache(): 
    from app_news.models import News 
    for news in News.objects.all().order_by('-pk'): 
     do_some_logic(news) 

私はmanage.py migrateコマンドを使用してデータベースを作成しようとしている、私は次のエラーを取得しています:

django.db.utils.OperationalError: no such table: app_news_news

限り私は理解して、migrate負荷すべてのアプリケーションとの通話をreadyメソッドAppConfigから、データベースを作成できません。

おそらくいくつかの回避策がありますか?

答えて

0

それがここで言及されているようにあなたは、ready方法でクエリを実行することは避けてください:https://docs.djangoproject.com/en/1.9/ref/applications/#django.apps.AppConfig.ready

をたぶん、あなたはので、すべての管理コマンドによって呼び出されませんwsgi.pyまたはurls.py、のような、どこか他のあなたのinit_cacheメソッドを呼び出すことができます。

+1

ありがとう!しかし、私はキャッシュ初期化は 'urls.py'にあるべきだとは思っていません。私の意見では、これは明らかではありません。 – parikLS

関連する問題