Django-28-ORM建表(一对一)

前言

使用场景
当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁
把不怎么常用的字段,单独拿出来做成一张表,然后通过一对一关联起来

比如作者表作者信息表可以使用一对一(一个作者只有一个与之对应的作者信息),即字表中的一条数据只对应母表中的一条数据,在母表中关联的数据不能再关联其他在子表中的数据

优势

既保证数据都完整的保存下来,又能保证大部分的检索更快

基于上一篇的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表

至此,一对一表创建完成  

猜你喜欢

转载自blog.csdn.net/qq_39620483/article/details/89225281
今日推荐