python - django 并执行一个单独的 .py 来操作数据库

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

谢谢

最佳答案

您在这里有两个不同的问题 - 最好将它们分开。

要运行单独的脚本,您最好创建一个 ./manage.py 命令。参见 the documentation关于如何做到这一点。

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

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

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

关于python - django 并执行一个单独的 .py 来操作数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1586041/

相关文章:

python - `.select_by_visible_text()` 选择元素失败?

python - Django 管理员 - 登录

django - 更改 Django 表单值

python - Django:与用户表的外键关系不验证

python - Django 模型继承和外键

python - 如何在 dropna() pandas dataframe 之后重置索引 pandas dataframe

python - 有没有办法从 Django 的任何地方访问上下文?

python - Manager.Namespace() 内的多处理队列

python - KeyError : u"Migration rango. 0002_auto_20150905_0345 依赖引用不存在的父节点

python - 修订控制模型的好方法? - Django