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://mkaliez.com"
    }
  }
]

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

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

Default image
wakmemory&lody
Leave a Reply

]]>