Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django:如何制作;python manage.py syncdb“;不仅要创建数据库,还要用我需要的数据填充它?_Python_Django_Django Models - Fatal编程技术网

Django:如何制作;python manage.py syncdb“;不仅要创建数据库,还要用我需要的数据填充它?

Django:如何制作;python manage.py syncdb“;不仅要创建数据库,还要用我需要的数据填充它?,python,django,django-models,Python,Django,Django Models,当我运行“python manage.py syncdb”时,我想要的不是空数据库,而是我想要的数据。如果Django中有一个钩子来运行许多foo.save()行?假设您使用的是Django 1.7,您可以编写一个钩子来插入所需的任何数据。来自Django: 提供设备的初始数据 fixture是Django知道如何导入数据库的数据集合。如果已经获得了一些数据,那么创建设备的最简单方法是使用manage.py dumpdata命令。或者,您可以手工编写装置;fixture可以写成JSON、XML或

当我运行“python manage.py syncdb”时,我想要的不是空数据库,而是我想要的数据。如果Django中有一个钩子来运行许多foo.save()行?

假设您使用的是Django 1.7,您可以编写一个钩子来插入所需的任何数据。

来自Django:

提供设备的初始数据 fixture是Django知道如何导入数据库的数据集合。如果已经获得了一些数据,那么创建设备的最简单方法是使用manage.py dumpdata命令。或者,您可以手工编写装置;fixture可以写成JSON、XML或YAML(安装了PyYAML)文档。序列化文档提供了有关这些受支持的序列化格式的详细信息

在版本1.7 Django之前,有一种自动加载夹具的机制:

如果您创建了一个名为initial_data.[xml/yaml/json]的fixture,那么每次运行migrate时都会加载该fixture。这非常方便,但要小心:请记住,每次运行migrate时都会刷新数据。因此,不要对要编辑的数据使用初始_数据

如果使用的是Django>=1.7,则必须发出
loaddata
manage命令或创建迁移:

如果应用程序使用迁移,则不会自动加载装置。由于Django 2.0中的应用程序需要迁移,因此这种行为被认为是不推荐的。如果你想加载一个应用程序的初始数据,考虑在数据中执行它。 用于阻塞大输入的JSON序列化程序(尝试加载内存中的所有内容或类似内容);XML序列化程序过去在较大的装置上表现得更好。

有一个问题

简而言之,您有三种选择:

  • 提供一套描述模型的“固定装置”。这种方式与DB无关,可以与django可以交谈的任何DB一起使用
  • 提供一组要运行的SQL脚本。在这里您可以得到的好处是使用一些特定于数据库的数据类型/编程功能等。但是,在Django 1.7中,它被认为是不推荐的,将在Django 2.0中删除
  • 创建一组(Django>=1.7随附,供早期版本使用)
此外,每次运行
migrate
时都会加载初始数据:

如果您创建了一个名为initial_data.[xml/yaml/json]的fixture,那么每次运行migrate时都会加载该fixture。这非常方便,但要小心:请记住,每次运行migrate时都会刷新数据。因此,不要对要编辑的数据使用初始_数据