只要继承了model.Model, 就会生成一个新的表,但是,如果在Meta方法中添加abstract=True,就不会产生新的表,而是作为一个基类存放多个表共同拥有的方法和字段等

from django.db import models

class Commen(models.Model):
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
class Meta:
# 添加关键字,不会产生新的表
abstract = True
# 这张表继承了Base,哪怕没有字段create_time和update_time,也同样会展示出来
class CourseType(Base):
title = models.CharField('课程类别',max_length=16)
sequence = models.IntegerField('展示顺序',default=10) class Meta:
db_table = 'tb_coursetype' def __str__(self):
return self.title
0.路径表关系梳理

1.路径表
# 路径表 

class Path(Base):
  title = models.CharField('路径名', max_length=16)
  img = models.ImageField('路径图片', upload_to='path', null=True)
  desc = models.CharField('路径描述', max_length=255)
  user = models.ManyToManyField('user.User', blank=True)
  

  def course_total(self):
    count = 0
    for jd in self.jieduan.all():
      count = count + jd.courses.count()
    return count

    class Meta:
      db_table = 'tb_path'
    

    def __str__(self):
      return self.title

2.阶段表
class JieDuan(Base):
  title = models.CharField('阶段名', max_length=16)
  serial_num = models.IntegerField('阶段序号')
  path = models.ForeignKey(Path, related_name='jieduan', on_delete=models.SET_NULL, null=True)
  courses = models.ManyToManyField(Course, blank=True)

  class Meta:
    db_table = 'tb_jieduan'

  def __str__(self):
    return "%s-第%s阶段-%s" % (self.path.title, self.serial_num, self.title)

 

最新文章

  1. .NET Core下的日志(2):日志模型详解
  2. php与js中函数参数的默认值设置
  3. 把textarea右下角的灰点去掉
  4. Android课程---计算器的实现
  5. caffe中python接口的使用
  6. bzoj1758 [Wc2010]重建计划 & bzoj2599 [IOI2011]Race
  7. Hadoop :map+shuffle+reduce和YARN笔记分享
  8. Qt 多线程学习
  9. 转:WebSocket与Java
  10. myeclipse10.7破解成功 但 无法打war包 securecrt alert:integrity check error 解决方案
  11. Android SQLite Database Tutorial
  12. jsp中forward和redirect的区别(转)
  13. Spark 1.0.0版本发布
  14. (ASP.NET )去除字符串中的HTML标签
  15. java集合框架(hashSet自定义元素是否相同,重写hashCode和equals方法)
  16. c/cpp语言链表连接部分详解
  17. HTML 部分非常用标签
  18. Python中什么是深拷贝和浅拷贝且有什么区别
  19. 利用final定义方法:这样的方法为一个不可覆盖的方法。
  20. 利用Linux的硬连接删除MySQL大文件

热门文章

  1. Git系列:常用命令
  2. Java学习的第三十八天
  3. Python使用进程制作爬虫
  4. Java_静态代理与Lambda
  5. ES6 小记
  6. 剑指29:最小的k个数
  7. Linux AWK工作原理
  8. gitlab - 解决访问 gitlab 网站出现 502 报错信息的问题
  9. QQ群web前端分析一——准备部分
  10. [MIT6.006] 17. Bellman-Ford