【问题标题】:How to create model instances from command line (terminal)如何从命令行(终端)创建模型实例
【发布时间】:2019-01-20 12:49:55
【问题描述】:

我认为这可能是以前提出的问题,所以也许我的措辞不正确。

我试过了:

manage.py python3.6 dbshell

然后:

 obj= Person.objects.create('Justin')

但这不起作用。感谢您的帮助。

【问题讨论】:

  • 你应该使用 named 参数,比如Person.objects.create(name='Justin'),Django 怎么知道'Justin' 映射到哪个字段?
  • 我想如果没有提供参数名称,它会按照模型中列出的顺序保存吗?
  • 属性没有顺序。属性以字典格式传递,因此顺序丢失。它也将是可怕的不稳定,因为通过构造一个新字段,那么所有的构造函数都应该更新。

标签: django django-models django-database


【解决方案1】:

你走在正确的轨道上,但是当你创建模型实例时,你应该为字段使用 named 参数,例如:

obj = Person.objects.create(<b>name=</b>'Justin')

(当然,Person 有一个 name 字段)

这是合乎逻辑的,因为一个模型可以有多个字段,并且没有“固有”顺序。

使用 位置 参数会非常冒险,因为简单地“重新洗牌”字段会导致模型对象构造出错。

【讨论】:

    【解决方案2】:

    dbshell 命令运行数据库的命令行客户端,因此您必须使用 SQL 在数据库中创建一行。你真正想要的是shell 命令。它会打开一个配置了 Django 的 Python 解释器,因此您可以在那里使用 ORM。

    【讨论】:

      【解决方案3】:
      obj= Person.objects.create(name='Justin')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-10-06
        • 2016-12-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多