模型层 - 负责跟数据库之间进行通信(管理数据)

定义表结构

博客Web项目-模型层-创建model - 图1

编辑子应用下的models.py文件

image.png

  1. from django.db import models
  2. # Create your models here.
  3. class Category(models.Model):
  4. # 会自动创建自增长的id字段
  5. # 定义数据表的name字段(最大长度50个字节,唯一)
  6. name = models.CharField(max_length=50, unique=True, verbose_name="分类名称")
  7. # 字符串类型,max_length是必填参数
  8. create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)
  9. # 定义数据表中的create_time字段
  10. update_time = models.DateTimeField(verbose_name="修改时间", auto_now=True)
  11. # 定义数据表中的update_time字段
  12. class Meta:
  13. # db_table = "category" #指定数据库里实际的表名 appname+classname
  14. # user_category
  15. verbose_name = "文章分类"
  16. verbose_name_plural = verbose_name # 加上这个复数形式就不展示“s”了
  17. def __str__(self):
  18. return self.name
  19. class Article(models.Model):
  20. title = models.CharField(max_length=80, verbose_name="文章名称")
  21. content = models.TextField(verbose_name="文章内容")
  22. # TextField长文本类型的,它不限制长度
  23. img = models.ImageField(verbose_name="文章图片", null=True, blank=True, upload_to='./static')
  24. # null=True,blank=True 修改默认允许为空
  25. category = models.ForeignKey(Category, on_delete=models.DO_NOTHING, verbose_name="归属分类")
  26. # ForeignKey定义外键
  27. create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)
  28. update_time = models.DateTimeField(verbose_name="修改时间", auto_now=True)
  29. class Meta:
  30. # db_table = "category"
  31. # 指定数据库里实际的表名
  32. # 如果不指定,就默认生成表名 appname+classname 即 user_category
  33. verbose_name = "文章"
  34. verbose_name_plural = verbose_name
  35. def __str__(self):
  36. return self.title

生成创建数据表的语句

  1. python manage.py makemigrations # 先 生成创建表的语句

image.png
image.png

同步到数据库

  1. python manage.py migrate # 同步到数据库

image.png

连接SQLite数据库验证

菜鸟教程:SQLit数据库介绍
image.png
数据表创建成功~