在 Rails 中,我可以为 rake 创建一个自定义作业,它可以做任何我想做的事,然后将其作为“rake my_task”运行。在 Django 中有什么方法可以做到这一点?
特别是,我需要创建这样一个作业,它以自定义格式读取我自己的数据文件,以特殊方式处理数据并将其插入数据库。我将多次运行它,而不是一次。为此,我创建了一个纯 python 脚本并运行了它,但出现了错误
django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.
所以 python 脚本不起作用,必须有一种 django 方式来做到这一点。
请您参考如下方法:
“Django 方式”是创建一个 custom command .
如果你想创建一个外部 python 脚本,那么还有一种方法可以做到这一点,解释了 in this stack overflow answer (编辑:这对于 django 1.7 实际上已经过时了)以及如何创建自定义命令的示例。如果您使用的是最新版本的 django,我推荐使用 django 文档。
有关相关主题,请查看 fabric .
编辑:
对于 django >= 1.7 独立脚本:
import os
import django
from myapp import models
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
print models.MyModel.objects.get(pk=1)
