【问题标题】:Django call_command no-initial-data optionDjango call_command 无初始数据选项
【发布时间】:2013-01-05 22:52:13
【问题描述】:

在 Django 中,我想这样做 call_command 相当于

manage.py flush --no-initial-data

类似

call_command('flush', interactive = False, initial_data = False)

initial_datano_initial_data 不是正确的关键字(它们什么都不做)。

很抱歉这个小问题,但我找不到这些选项的任何文档。

【问题讨论】:

  • --no-initial-data 是 django 1.5 中的新功能。你确定用那个吗?
  • 阳性:1.5.0.rc.1。但它不会阻止任何初始数据,它只是进行正常刷新。我期待它提供一个完全空的数据库,但阅读链接,这可能不是预期的用途?它是否跳过了initial_data 夹具?我想要一个空数据库来导入东西。
  • 1) 此功能在 Django 1.9 中已弃用 2) 使用 initial_data 确实不安全,因为它会默默地覆盖您在 db 中的当前状态
  • @pymen 很高兴知道它已被弃用,谢谢。如果您无论如何都要刷新数据库,我看不出使用 initial_data 的危险。
  • @Mark 风险在于您不想刷新时:当您在 staging/prod 上运行“manage.py migrate”并忘记使用“manage.py migrate --no-initial-”时数据”-如果真实数据库中的某些记录自“initial_data”状态以来发生了变化

标签: django flush manage.py


【解决方案1】:

查看source,似乎no-initial-data 选项存储在名为load_initial_data 的选项变量中

所以我认为你需要

call_command('flush', interactive=False, load_initial_data=False)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2021-08-05
    相关资源
    最近更新 更多