前言
使用场景
当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁
把不怎么常用的字段,单独拿出来做成一张表,然后通过一对一关联起来
比如作者表与作者信息表可以使用一对一(一个作者只有一个与之对应的作者信息),即字表中的一条数据只对应母表中的一条数据,在母表中关联的数据不能再关联其他在子表中的数据
优势
既保证数据都完整的保存下来,又能保证大部分的检索更快
基于上一篇的author表,新增一个details字段,并且新增与之对应的author_details表
django_study.app01.models.py
from django.db import models
# Create your models here.
class Author(models.Model):
name = models.CharField(max_length=32)
age = models.IntegerField(default=20)
# 默认与author_details表中的主键(id)关联
details = models.OneToOneField("AuthorDetails", on_delete=models.CASCADE)
class Meta:
db_table = "author"
class AuthorDetails(models.Model):
hobby = models.CharField(max_length=64)
addr = models.CharField(max_length=64)
sch = models.CharField(max_length=32)
class Meta:
db_table = "author_details"
生成迁移文件并同步数据库
打开Navicat查看
author表
author_details表
至此,一对一表创建完成