2012-01-17 16 views
0

私はいくつかの静的メソッドを持つDjangoモデルを持っています。私はアプリケーションの外からメソッドを呼びたい(cronjob)。外からモデルのメソッドを呼び出すDjango

私が持っているモデル:

class Job(models.Job): 
    #Irrelevant information 

    @staticmethod 
    def methodIwantToCall(): 
     #statements 

私はcronジョブ用に使用しています次のPythonファイルを持っている:まず

#!/usr/bin/python 
# -*- coding: UTF-8 -*- 

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' 

from myapp.models import Job 

Job.methodIwantToCall() 

に、私はDJANGO_SETTINGS_MODULE not being setに関するエラーを持っていたし、しかし、今私は次のエラーがあることを修正しました:No module named myapp.utils

私は私がするべきではないことをやっているような気がします。では、静的メソッドを呼び出す方法はどのように呼びますか?

EDIT:私がDjangoの外からインポートしているときに、パスが混乱しているようです。たとえば、モデルファイルにインポートを持っていますが、それは動作していても、メッセージImportError: No module named myapp.utilsでインポートに失敗したcronファイルを呼び出すときです。

from django.core.management import setup_environ 
import settings 

setup_environ(settings) 

答えて

2

適切な解決策がcustom manage.py commandを作成することです:あなたのcronジョブコードが先頭に次のセットアップコードを使用して、あなたの設定ファイルと同じディレクトリに存在すると仮定すると、

+0

提案していただきありがとうございます、私はそれを行うために十分な知識を持っているかどうかを見ていきます。 – Ali

+0

私は[django-extensions](https://github.com/django-extensions/django-extensions)を使ってしまいました。 – Ali

1

+0

cronジョブコードは同じディレクトリにあります。私はUtilsをインポートできないということについても同じエラーが発生しています。 のpython cron_fetch.py​​ トレースバック(最新の呼び出しの最後): "C:\ APPS \ myappの\ models.py" myapp.modelsから で ファイル "cron_fetch.py​​"、13行目では、ジョブ ファイルをインポートし、行4、 myapp.utilsからインポートbeautifyDict ImportError:myapp.utilsという名前のモジュールがありません – Ali

+0

ひどい書式のコメントは残念です。 – Ali

+0

OK、 'models'ファイルで' from utils import beautifyDict'のような相対的なインポートを使ってこれを解決できるかもしれません。しかし、@DrTyrsaで述べたようにカスタムのmanage.pyコマンドを作成する方が良い解決策かもしれません。 –

関連する問題