我正在编写一个脚本,将一些模型对象导入到我的django应用程序使用的数据库中。过去,我通过运行./manage.py shell然后解决了这个问题import myscript。我敢肯定有更好的方法。我希望能够使用在HD的任何位置调用脚本python scriptname.py,并且在该脚本的前几行中,它将执行任何必需的导入/其他操作,以便它可以访问模型对象并像运行时一样运行使用manage.py shell。
./manage.py shell
import myscript
python scriptname.py
manage.py shell
要实现此目的,我需要添加什么内容?
编辑:
基于@Melug的答案,此外还动态设置了Python路径以解决问题的“ HD上的任何地方”:
import sys sys.path.append('c:\\my_projec_src_folder') from myproject import settings from django.core.management import setup_environ setup_environ(settings)
你需要先设置django环境:
from your_project import settings from django.core.management import setup_environ setup_environ(settings)
最后导入你的模型,一切就像django一样。
从Django 1.4开始,你应该避免使用setup_environ(settings)(由Melug发表),因为它已被弃用。请改用以下内容,你将可以访问模型
setup_environ(settings)
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "your_project_name.settings") # your imports, e.g. Django models from your_project_name.models import Location # From now onwards start your script..
这是访问和修改模型的示例:
if __name__ == '__main__': # e.g. add a new location l = Location() l.name = 'Berlin' l.save() # this is an example to access your model locations = Location.objects.all() print locations # e.g. delete the location berlin = Location.objects.filter(name='Berlin') print berlin berlin.delete()
示例模型:
class Location(models.Model): name = models.CharField(max_length=100)