我有一些带有一些静态方法的Django模型。我想从应用程序外部调用方法(cronjob)。
我的模特:
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
导入。
答案 0 :(得分:2)
正确的解决方案是创建custom manage.py command。
答案 1 :(得分:1)
假设您的cron作业代码与您的设置文件位于同一目录中,请在开头使用以下设置代码:
from django.core.management import setup_environ
import settings
setup_environ(settings)