从外部调用模型的方法Django
我有一些静态方法的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
我觉得我正在做一些我不应该做的事情。那么,我如何以我想要的方式调用静态方法呢?
编辑:它看起来像路径越来越乱了,当我从外部Django导入。例如,我在我的模型文件中有一个导入,当我调用cron文件时,即使它正在工作,它也会通过消息ImportError: No module named myapp.utils
导入失败。
假设你的cron作业代码驻留在相同的目录中设置文件,使用下面的设置代码开头:
from django.core.management import setup_environ
import settings
setup_environ(settings)
cron作业代码驻留在同一目录中。我仍然有关于不能导入Utils的错误。 蟒蛇cron_fetch.py 回溯(最近通话最后一个): 文件 “cron_fetch.py”,13号线,在
对于糟糕的格式化注释感到抱歉。 – Ali 2012-01-17 09:32:14
好的,也许你可以通过在'models'文件中使用'from utils import beautifyDict'等相对导入来解决这个问题。但是,如@DrTyrsa所提到的那样创建自定义的manage.py命令可能是更好的解决方案。 – 2012-01-17 09:38:02
谢谢你的建议,我会研究它是否有足够的知识去做:P。 – Ali 2012-01-17 09:41:25
我结束了使用[django-extensions](https://github.com/django-extensions/django-extensions)。 – Ali 2012-01-17 15:29:16