Python django并执行一个单独的.py来管理数据库

Python django并执行一个单独的.py来管理数据库,python,django,django-models,Python,Django,Django Models,我想使用crobjob在myproject/myapp文件夹上执行一个随机的.py文件,比如foo.py 我在应用程序的model.py中有以下基本模型: class Mymodel(models.Model): content = models.TextField() 假设我在我的foo.py中有这个,我想检查是否有任何Mymodel对象的内容字段和mytext相同,若并没有使用mytext作为内容创建一个新的Mymodel,若已经存在,则什么都不做 <do django im

我想使用crobjob在myproject/myapp文件夹上执行一个随机的.py文件,比如foo.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

mytext=“这里有些东西”
如果Mymodel.filter(content=mytext)==null:
newitem=Mymodel(content=mytext)
newitem.save()
其他:
通过
我的问题是,我该怎么做?另外,我如何检查查询是否没有项(不知道Mymodel.filter(content=mytext)==null是否有效。我也不知道这是否是实现我的目标的有效方法,因为Mymodel的数量将很高


谢谢

您这里有两个独立的问题-最好将它们分开

要运行单独的脚本,最好创建一个
/manage.py
命令。请参见如何执行此操作

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

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

它询问数据库有多少个content=mytext的项目,如果没有,则为True。

这里有两个单独的问题-最好将它们分开

要运行单独的脚本,最好创建一个
/manage.py
命令。请参见如何执行此操作

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

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

它询问数据库有多少个content=mytext的项目,如果没有,则为True。

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

您也可以签出,它有一个名为“运行脚本"这将在django项目的上下文中执行任何python脚本。

thabjs alot daniel对于答案,我是否需要在执行自定义命令时导入django和模型?文档中缺少在脚本中使用模型时始终需要导入模型的详细信息,以及您正在使用的任何django模块。这是真的在任何Python代码中。thabjs alot daniel作为答案,我是否需要在执行自定义命令时导入django和模型?该文档缺少在脚本中使用模型时导入模型以及所使用的任何django模块时始终需要的详细信息。任何Python代码都是如此。