2009-10-18 60 views
1

我想执行一个随机.py文件,通过使用crobjob通过某些时期Django和执行单独的.py到manipute数据库

说对的myproject/MyApp文件夹foo.py我在这个基本模型我的应用程序model.py:

class Mymodel(models.Model): 
    content = models.TextField() 

说我有这在我的foo.py,我要检查是否有,有一个内容字段作为mytext的任何相同为MyModel的对象,如果不进行新的MyModel以mytext作为内容,如果已经存在则什么也不做。

<do django importings> 
mytext = "something here" 
if Mymodel.filter(content=mytext) == null: 
    newitem = Mymodel(content=mytext) 
    newitem.save() 
else: 
    pass 

所以这里是我的问题,我应该做什么django进口?另外我怎样才能检查查询是否没有项目(不知道如果Mymodel.filter(content = mytext)== null会工作。我也不知道这是否是一种有效的方式来实现我的目标为MyModel的量会很高

感谢

回答

5

您这里有两个独立的问题。 - 它会更好,他们打出

要运行一个单独的脚本,你最好创建./manage.py command。请参阅the documentation关于如何执行此操作。

对于第二个问题,您提供的代码不是有效的Py thon,因为没有'null'值 - 你的意思是None。然而,即使这样,代码也无法运行,因为这不是使用Django ORM编写查询的方式。你想要的东西是这样的:

if not MyModel.objects.filter(content=mytext).count(): 

它询问数据库有多少项目与content = mytext,如果没有的话是真的。

+0

thabjs很多丹尼尔的答案,我需要导入django和模型,而做自定义命令?该文档缺少详细信息 – Hellnar 2009-10-19 04:51:09

+1

如果您在脚本中使用它们,并且使用的是任何Django模块,则始终需要导入模型。任何Python代码都是如此。 – 2009-10-19 06:14:06

2

你也可以看看django-extensions,它有一个名为“runscript”的内置manage.py扩展,它在你的django项目的上下文中执行任何python脚本。