from django.db import models

# Create your models here.
class BookInfoManager(models.Manager):
'''图书模型管理器类'''
# 1.改变原有查询的结果集
def all(self):
# 1.调用父类的all方法,获取所有数据
books = super().all() # QuerySet
# 2.对books中的数据进行过滤
books = books.filter(isDelete=False)
# 返回books
return books # 2.封装方法,操作模型类对应的数据表(增删改查)
def create_book(self, btitle, bpub_date):
'''添加一本图书'''
# 1.创建一个图书对象
# 获取self所在的模型类
model_class = self.model
book = model_class()
# book = BookInfo()
book.btitle = btitle
book.bpub_date = bpub_date
# 2.添加进数据库
book.save()
# 3.返回book
return book # 一类
# booktest2_bookinfo
class BookInfo(models.Model):
'''图书模型类'''
# 图书名称
btitle = models.CharField(max_length=20, db_column='title')
# 图书名字唯一
# btitle = models.CharField(max_length=20, unique=True, db_index=True)
# 价格,最大位数为10,小数为2
# bprice = models.DecimalField(max_digits=10, decimal_places=2)
# 出版日期
bpub_date = models.DateField()
# bpub_date = models.DateField(auto_now_add=True) # 创建时间
# bpub_date = models.DateField(auto_now=True) # 更新时间
# 阅读量
bread = models.IntegerField(default=0)
# 评论量
bcomment = models.IntegerField(default=0)
# 删除标记
isDelete = models.BooleanField(default=False) # book = models.Manager() # 自定一个Manager类对象,管理器对象
objects = BookInfoManager() # 自定义一个BookInfoManager类的对象 # @classmethod
# def create_book(cls, btitle, bpub_date):
# '''添加一本图书'''
# # 创建一个cls类的对象
# obj = cls()
# obj.btitle = btitle
# obj.bpub_date = bpub_date
# # 添加进数据库
# obj.save()
# # 返回obj
# return obj class Meta:
db_table = 'bookinfo' # 指定模型类对应表名 # 多类
class HeroInfo(models.Model):
'''英雄人物模型类'''
# 英雄名
hname = models.CharField(max_length=20)
# 性别
hgender = models.BooleanField(default=False)
# 备注
hcomment = models.CharField(max_length=200, null=True, blank=False)
# 关系属性
hbook = models.ForeignKey('BookInfo',on_delete=True)
# 删除标记
isDelete = models.BooleanField(default=False)
'''
# 新闻类型类
class NewsType(models.Model):
# 类型名
type_name = models.CharField(max_length=20)
# 关系属性,代表类型下面的信息
type_news = models.ManyToManyField('NewsInfo') # 新闻类
class NewsInfo(models.Model):
# 新闻标题
title = models.CharField(max_length=128)
# 发布时间
pub_date = models.DateTimeField(auto_now_add=True)
# 信息内容
content = models.TextField()
# 关系属性, 代表信息所属的类型
# news_type = models.ManyToManyField('NewsType') # 员工基本信息类
class EmployeeBasicInfo(models.Model):
# 姓名
name = models.CharField(max_length=20)
# 性别
gender = models.BooleanField(default=False)
# 年龄
age = models.IntegerField()
# 关系属性,代表员工的详细信息
employee_detail = models.OneToOneField('EmployeeDetailInfo') # 员工详细信息类
class EmployeeDetailInfo(models.Model):
# 联系地址
addr = models.CharField(max_length=256)
# 教育经历
# 关系属性,代表员工基本信息
# employee_basic = models.OneToOneField('EmployeeBasicInfo')
''' class AreaInfo(models.Model):
'''地区模型类'''
# 地区名称
atitle = models.CharField(max_length=20)
# 关系属性,代表当前地区的父级地区
aParent = models.ForeignKey('self', null=True, blank=True,on_delete=True) # class Meta:
# db_table = 'areas'

2020-05-19

最新文章

  1. Mac如何删除MySQL,Mac下MySQL卸载方法
  2. HD2222 Keywords Search(AC自动机入门题)
  3. Python程序的首行
  4. Struts2 Result 类型和对应的用法详解 2
  5. 安装centOS分区的图解记录
  6. 【原创】高性能网络编程(二):上一个10年,著名的C10K并发连接问题
  7. 【转载】ASP.NET MVC Web API 的路由选择
  8. [转]关于Python中的yield
  9. Flask 模板语言
  10. ms
  11. 【CSS3】标签使用说明
  12. iOS开发——运行时OC篇&使用运行时获取系统的属性:使用自己的手势修改系统自带的手势
  13. SQL的内连接与外连接
  14. Zigbee、WiFi和433MHz无线技术各有特点
  15. 转:Grunt:任务自动管理工具
  16. BZOJ 1196: [HNOI2006]公路修建问题( MST )
  17. ROS新功能包PlotJuggler绘图
  18. Java语言中的面向对象特性
  19. Lucene的其他搜索(三)
  20. 朴素贝叶斯分类算法介绍及python代码实现案例

热门文章

  1. Mybatis 动态insert语句
  2. elasticsearch7.6 安装 并且开启外网访问,真的好累。
  3. css如何让文字不换行显示?
  4. 前端性能优化_css加载会造成哪些阻塞现象?
  5. SpringCloud系列之集成分布式事务Seata应用篇
  6. P1220 关路灯——区间dp
  7. C# 爬取猫眼电影数据
  8. DLL隐式链接
  9. SaaS 系统架构,Spring Boot 动态数据源实现!
  10. 关于点击input框唤醒键盘导致input被遮盖的问题