django并执行单独的.py来操作数据库

时间:2009-10-18 21:07:17

标签: python django django-models

我想执行一个随机的.py文件,在myproject / myapp文件夹中说foo.py,在某段时间内使用crobjob

我的app.py的model.py中有这个基本模型:

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

假设我在我的foo.py中有这个,我想检查是否有任何Mymodel对象的内容字段与mytext相同,如果没有使用mytext作为内容创建一个新的Mymodel,如果已经存在什么都不做

<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的数量会很高。

由于

2 个答案:

答案 0 :(得分:5)

这里有两个不同的问题 - 将它们拆分出来会更好。

要运行单独的脚本,最好创建./manage.py命令。有关如何执行此操作,请参阅the documentation

对于第二个问题,您提供的代码不是有效的Python,因为没有“null”值 - 您的意思是None。但即使这样,代码也无法工作,因为这不是您使用Django ORM编写查询的方式。你想要这样的东西:

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

使用content = mytext询问数据库有多少项,如果没有,则为真。

答案 1 :(得分:2)

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