from django.db import models

# 这是一个用于定义模型类的工具
# Create your models here.
# 1.设计一个图书类
class BookInfo(models.Model):
    # 定义述得名字是一个字符串类型的字段，最大长度为20字节
    btitle = models.CharField(max_length=20)
    # 定义图书的出版日期，这是一个日期类型的字段
    bpub_date = models.DateField()
    # 修改 __str__ 的返回值，使后台显示条目的名称
    def __str__(self):
        return self.btitle
    # 定义完成后通过 python manage.py makemigrations 制作迁移文件
    # 通过 python manage.py migrate 借助迁移文件在数据库中创建数据表

# 2.设计一个英雄人物类
# 影响任务和图书具有多对一的关系, 多个英雄可能同时属于一本图书
class HeroInfo(models.Model):
    hname = models.CharField(max_length=20)
    # 性别是布尔值, False代表男性, 默认性别是男性
    hgender = models.BooleanField(default=False)
    hcomment = models.CharField(max_length=128)
    # 在英雄人物类中创建一个外键, 用于关联图书类
    # ForeginKey 表示关联的外键类
    # django 2.0 开始, 外键需要设置 on_delete 属性
    # CASCADE：此值设置，是级联删除
    # 创建生成的属性名字段为: 属性名_id, 本例中是 hbook_id
    hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)
    # 继续制作迁移文件, 在数据库中制作数据表

    hcomment = models.CharField(max_length=128)
    # 在英雄人物类中创建一个外键, 用于关联图书类
    # ForeginKey 表示关联的外键类
    # django 2.0 开始, 外键需要设置 on_delete 属性
    # CASCADE：此值设置，是级联删除
    # 数据库中创建生成的属性名字段为: 属性名_id, 本例中是 hbook_id
    hbook = models.ForeignKey('BookInfo', on_delete=models.CASCADE)

    # 修改 __str__ 的返回值，使后台显示条目的名称
    def __str__(self):
        return self.hname

    # 继续制作迁移文件, 在数据库中制作数据表
