我想执行一个随机的.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的数量会很高。
由于
答案 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脚本。