django ORM 创建表关系

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='作者地址')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值