---
title: "django 向数据库放入一些初始化数据"
id: "2770"
type: "post"
slug: "django-%e5%90%91%e6%95%b0%e6%8d%ae%e5%ba%93%e6%94%be%e5%85%a5%e4%b8%80%e4%ba%9b%e5%88%9d%e5%a7%8b%e5%8c%96%e6%95%b0%e6%8d%ae"
published_at: "2020-03-28T12:34:20+00:00"
modified_at: "2020-03-28T12:44:16+00:00"
url: "https://seq.ink/all/2770.html"
markdown_url: "https://seq.ink/all/2770.html.md"
excerpt: "假设我们需要在django初始化的时候在数据库提前放谢数据用来测试。 比如：数据库里有一张叫 [site_option] 里面有3个字段 [id] [option_name] [option_value]， 我们现在需要在启动django之 ..."
taxonomy_category:
  - "ALL"
  - "Coding代码堆"
  - "Linux"
  - "Share分享"
taxonomy_post_tag:
  - "django"
---

假设我们需要在django初始化的时候在数据库提前放谢数据用来测试。  
 比如：数据库里有一张叫 [site_option] 里面有3个字段 [id] [option_name] [option_value]，  
 我们现在需要在启动django之前向这张表添加1条数据，之后我们需要在Views里获取博客的名称：

| index_site_option |  |  |
| --- | --- | --- |
| id | option_name | option_value |
| 1 | blog_name | 这里是F_picachoの领域(๑•̀ㅂ•́)و✧ |

我们先在app目录下创建一个名叫fixtures的文件夹，现在的目录是这样的：

.  
 ├── index （app的名字）  
 │ ├── admin.py  
 │ ├── apps.py  
 │ ├── fixtures (我们需要创建的文件夹)  
 │ │ └── initial_data.json（初始化json数据）  
 │ ├── __init__.py  
 │ ├── migrations

其中initial_data.json的名字可以随意起 比如简化成 init.json

现在假设你有一个叫site_option的模型

```
class site_option(models.Model):
    option_name=models.CharField(max_length=50)
    option_value=models.CharField(max_length=100)
```

那么init.json可以这样写:

```
[
 {
   "model": "index.site_option", //index是app的名称，site_option是模型的名称
   "pk": 1, //primary key 的简写
   "fields": { //里面是你需要添加的数据
     "option_name":"blog_name",
     "option_value": "这里是F_picachoの领域(๑•̀ㅂ•́)و✧"
   }
 }
//如果想再加1条。
 {
    "model": "index.site_option",
    "pk": 2,
    "fields": {
      "option_name": "blog_url",
      "option_value": "https://seq.ink"
    }
  }
]

现在我们初始化数据：
python manage.py loaddata init.json

PS:这里我们不需要写init.json的具体目录,但需要确保它位于 app 目录下的 fixtures 目录
```
