从Django外部调用模型的方法

时间:2012-01-17 09:20:31

标签: django django-models

我有一些带有一些静态方法的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导入。

2 个答案:

答案 0 :(得分:2)

正确的解决方案是创建custom manage.py command

答案 1 :(得分:1)

假设您的cron作业代码与您的设置文件位于同一目录中,请在开头使用以下设置代码:

from django.core.management import setup_environ
import settings

setup_environ(settings)