我想在OS shell中启动一个python文件,其中包含从django库导入的内容

我想在OS shell中启动一个python文件,其中包含从django库导入的内容,python,django,Python,Django,我有一个非常简单的例子,我想用python运行一个脚本 myscript.py: from models import Company c = Company(number="1234567890", name="Company name") from django.db import models class Company(models.Model): number = models.CharField("company number", max_length=20, uniqu

我有一个非常简单的例子,我想用python运行一个脚本

myscript.py

from models import Company
c = Company(number="1234567890", name="Company name")
from django.db import models

class Company(models.Model):
    number = models.CharField("company number", max_length=20, unique=True)
    name = models.CharField("company name", max_length=30, unique=True)

    class Meta:
        verbose_name = "Company"
        verbose_name_plural = "Companies"
models.py

from models import Company
c = Company(number="1234567890", name="Company name")
from django.db import models

class Company(models.Model):
    number = models.CharField("company number", max_length=20, unique=True)
    name = models.CharField("company name", max_length=30, unique=True)

    class Meta:
        verbose_name = "Company"
        verbose_name_plural = "Companies"
我想运行
python myscript.py
或类似的
python manage.py执行文件myscript.py


我知道我的问题很简单,我可以导入
python manage.py shell
环境,但这不是重点。我可以用一种非常简单的方式运行它吗?

是的,Django支持这一点:您可以定义一个自定义命令。它有一些支持,例如以更方便的方式解析命令参数

首先需要定义一个与所需命令同名的文件(因此这里
myscript.py
)。这应该放在
app/management/commands/
目录中(其中
app
是您系统的一个应用程序)。因此,文件树如下所示:

app/
    __init__.py
    management/
        __init__.py
        commands/
            __init__.py
            myscript.py
请注意,这个脚本实际上做的不多:您构建了一个
公司
,但您没有将其存储在数据库中,因此这意味着程序通常会停止,或者在输入无效的情况下引发错误

然后,您可以使用以下命令调用脚本:

python3 manage.py myscript
如果您请求帮助(使用
python3 manage.py help
),该命令也将列出


更深入地解释了可以执行哪些操作来解析命令、添加帮助文本等。

定义命令:解决方案正在运行,但仍然非常复杂。如果没有什么新的东西会接受你的答案,那就请你花点时间@СааСаааааааааааа1072
cat script.py |/manage.py shell
@WillemVanOnsem您是否介意重新编写您的示例,使其工作方式类似于
python3 manage.py运行myscript.py
@СаСааСааСаааааааааа。这意味着一个人应该使用
eval
,也被称为邪恶。@crmkСааааааааааааааааааа107