1.在构建网站的时候我们会分析业务,来构建我们的表结构,业务与业务之间是有关联的,这样就会导致,我们的表出现一对多,多对多,这种复杂关系,举个例子分析下:
构建课程表:
# _*_ encoding:utf-8 _*_
from django.db import models
from datetime import datetime
# Create your models here.
# 课程
class Course(models.Model):
name = models.CharField(max_length=50, verbose_name="课程名字")
decs = models.CharField(max_length=300, verbose_name="课程描述")
details = models.TextField(verbose_name="课程详情")
degree = models.CharField(choices=(("cj", "初级"), ("zj", "中级"), ("gj", "高级")), max_length=2)
learning_duration = models.IntegerField(default=0, verbose_name="学习时长")
study_number = models.IntegerField(default=0, verbose_name="学习人数")
collection_number = models.IntegerField(default=0, verbose_name="收藏人数")
cover = models.ImageField(upload_to="img/%Y/%X", default="", verbose_name="封面")
click_number = models.IntegerField(default=0, verbose_name="点击数")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = "用户信息"
verbose_name_plural = verbose_name
# 章节
class Lesson(models.Model):
course = models.ForeignKey("Course",on_delete=models.CASCADE)
name = models.CharField(max_length=20, verbose_name="章节名字")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = "章节信息"
verbose_name_plural = verbose_name
# 视频
class Voide(models.Model):
lesson = models.ForeignKey("Lesson", on_delete=models.CASCADE)
name = models.CharField(max_length=20, verbose_name="视频名称")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
class Meta:
verbose_name = "视频信息"
verbose_name_plural = verbose_name
# 课程资源
class CourseRecource(models.Model):
course = models.ForeignKey("Course",on_delete=models.CASCADE)
name = models.CharField(max_length=20, verbose_name="资源名称")
add_time = models.DateTimeField(default=datetime.now, verbose_name="添加时间")
download_url = models.FileField(upload_to="course/resource/%Y/%m", verbose_name="下载地址")
class Meta:
verbose_name = "课程资源"
verbose_name_plural = verbose_name
存放详情不限制字数,所以用这种类型
models.TextField(verbose_name="课程详情")
要注意的地方是一对多时候,Python描述这种关系,就是“多”会持有“一”并且将“一”作为主键持有
course = models.ForeignKey("Course",on_delete=models.CASCADE)