在Django项目上下文中执行方法? - Django

时间:2010-12-26 18:53:33

标签: python django django-models

我需要在我的Django项目的上下文中执行一些方法,以便使用模型。

我知道命令存在,但我想导入这些方法并在Python代码中执行它们。


有什么想法吗?

2 个答案:

答案 0 :(得分:2)

在调用python解释器之前,您只需要设置PYTHONPATH和DJANGO_SETTINGS_MODULE环境变量。从那时起,您可以导入模型,调用他们的方法等...

export PYTHONPATH="...include your site's apps path..."
export DJANGO_SETTINGS_MODULE="mysite.settings"
python
>>> from myapp.models import MyModel
>>> MyModel.objects.all()
...

答案 1 :(得分:2)

我的大多数命令行(和cron)脚本都类似于:

#!/usr/bin/env python

from django.core.management import setup_environ
import settings
setup_environ(settings)
from django.db import transaction

... code ...

# you need to do the followng before exit if you did any DB changes.
transaction.commit_unless_managed()

评论更新:

如果您进行了任何保存/其他更改,那么我的(可能有些过时)答案是肯定的。我不知道在最新的稳定版本中是否仍然需要它,但在我的数据库方面,我有点像腰带和吊带者。我在脚本末尾看到transaction.commit_unless_managed()作为一种安全网:如果托管模式生效,则它是NOP,如果不是则确保提交发生的情况。