ORM 创建表关系
Djang 1.x 外键默认级联更新,级联删除
from django.db import models
# Create your models here.
# 创建表关系,现将基表创建,再添加外键字段
# 书籍表
class Book(models.Model):
title = models.CharField(max_length=32, verbose_name='书籍名称')
# 小数总共8位,小数点后面占2位
price = models.DecimalField(max_digits=8, decimal_places=2, verbose_name='价格')
"""
书籍和出版社是一对多,并且书是多的一方,所以外键字段放在书表里面
"""
publish = models.ForeignKey(to='Publish', ) # 默认与出版社表的主键字段做外键关联
"""
图书和作者是多对多关系,ROM外键字段建在任意一方即可,推荐建在查询频率较高一方
authors是一个虚拟字段,主要用来告诉orm 书籍表和作者表是多对多关系
让orm自动创建第三张关系表
"""
authors = models.ManyToManyField(to='Author')
# 出版社
class Publish(models.Model):
name = models.CharField(max_length=32, verbose_name='出版社名称')
addr = models.CharField(max_length=32, verbose_name='出版社地址')
# 作者
class Author(models.Model):
name = models.CharField(max_length=32, verbose_name='作者名称')
age = models.IntegerField(verbose_name='作者年纪')
"""
作者与作者详情是一对一关系,外键字段建在任意一方均可,但是推荐建在查询频率较高的表中
"""
author_detail = models.OneToOneField(to='AuthorDetails')
# 作者详情
class AuthorDetails(models.Model):
phone = models.BigIntegerField(verbose_name='作者手机号码')
addr = models.CharField(max_length=32, verbose_name='作者地址')