­

HelloDjango 第 03 篇:创建 Django 博客的数据库模型

  • 2019 年 10 月 3 日
  • 筆記

???????????????? HelloGitHub-Team ??

???????????

??????????????????????????????????????????????????????????????????????????????????????????django ????????????????????

??????????????????????????????????????????????????????????????????????????????????

???????????????????????????????????????????????????

?????????????????????????????????????

?? id ?? ?? ???? ?? ??
1 title 1 text 1 2019-7-1 django django ??
2 title 2 text 2 2019-7-2 django django ??
3 title 3 text 3 2019-7-3 Python Python ??

???? ID ????????????????????????????????????????????????

????????????????????????????????????? 3 ??????????????????????????????????????????

???????????????????????????????????????????????????????????????????????????????

?? id ???
1 Django
2 Python
?? id ???
1 Django ??
2 Python ??

????????

????????????????????????????????????????????????????????????????????????????????????????????? django ???????? django ????????????????????????django ?????????????? Python ??????????? Python ???????django ?? Python ????????????????????????????? django ???????? ORM?Object Relational Mapping????

????????????django ?????????

blog/models.py    from django.db import models    class Category(models.Model):      name = models.CharField(max_length=100)

Category ??????? Python ?????? models.Model ????? Category ?Category ?????? name??? models.CharField ??????

???django ?????????????????????????????? category ?????????????? name?????? id??????????? django ?????????????? Python ?????????????????? Python ????????????????????????????????????

???? 3 ???????Post?????Category??????Tag??????????????? Python ???????????????? models.py ???????????????????????????????????????????????????????????????

blog/models.py    from django.db import models  from django.contrib.auth.models import User      class Category(models.Model):      """      django ???????? models.Model ??      Category ??????????? name ?????      CharField ?????? name ??????CharField ?????      CharField ? max_length ??????????????????????????????      ?? django ???????????????????????? DateTimeField????? IntegerField ???      django ?????????????      https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types      """      name = models.CharField(max_length=100)      class Tag(models.Model):      """      ?? Tag ??????? Category ???      ????????? models.Model ??      """      name = models.CharField(max_length=100)      class Post(models.Model):      """      ?????????????????????????      """        # ????      title = models.CharField(max_length=70)        # ?????????? TextField?      # ????????????? CharField????????????????????????? TextField ????????      body = models.TextField()        # ????????????????????????????????? DateTimeField ???      created_time = models.DateTimeField()      modified_time = models.DateTimeField()        # ???????????????????? CharField ??????????????????      # ?? CharField ? blank=True ?????????????      excerpt = models.CharField(max_length=200, blank=True)        # ??????????????????????????      # ???????????????????????????????????????????????      # ???????????????????????????????????????? ForeignKey???      # ?????????? django 2.0 ???ForeignKey ?????? on_delete ??????????      # ??????????????????????????????????????????????????     # ?? models.CASCADE ??????????      # ?????????????????????????????????????????      # ManyToManyField??????????????      # ???????????????????? tags ??? blank=True?      # ???? ForeignKey?ManyToManyField ??????????????????????      # https://docs.djangoproject.com/en/2.2/topics/db/models/#relationships      category = models.ForeignKey(Category, on_delete=models.CASCADE)      tags = models.ManyToManyField(Tag, blank=True)        # ??????? User ?? django.contrib.auth.models ????      # django.contrib.auth ? django ??????????????????????????User ?      # django ?????????????      # ?????? ForeignKey ???? User ??????      # ??????????????????????????????????????????????      # Category ???      author = models.ForeignKey(User, on_delete=models.CASCADE)

??????????

??? Category ? Tag ???????? models.Model ???? django ????Category ? Tag ?????name ???????????????????????????????????????? CharField ??? name ???????? max_length ????? name ????????????????????????????? CharField ?django ??????????????????????? DateTimeField????? IntegerField ???

???

????????????????????????????????????????? django ???? ????????? ???????????????????????

Post ?????????? models.Model ????????????????????????????????

  • title???????????? CharField???????? max_length = 70?

  • body??????????? TextField?????????????? CharField????????????????????????? TextField ????????

  • created_time ? modified_time????????????????????????????????? DateTimeField ?????

  • excerpt????????????????????? CharField ???????????????????? CharField ? blank=True ?????????????

  • category ? tags????????????????????????????????????????????????????????????????????????????????????????????????????????????? ForeignKey????????????? django 2.0 ???ForeignKey ?????? on_delete ?????????????????????????????????????????????????????????????? models.CASCADE ??????????

    ????????????????????????????????????????? ManyToManyField?????????????????????????????????? tags ??? blank=True?

  • author???????? User ?? django.contrib.auth.models ????django.contrib.auth ? django ???????????????????????????? User ? django ????????????????????? Category ????????????? ForeignKey ???? User???????????????????????????????????????????????????? Category ???

???????????????

???????????????????ForeignKey? ManyToManyField?

ForeignKey

ForeignKey ????????????????????????????????????????????????????????????????????????????????

?? ID ?? ?? ?? ID
1 title 1 body 1 1
2 title 2 body 2 1
3 title 3 body 3 1
4 title 4 body 4 2
?? ID ???
1 Django
2 Python

?????????????????????? ?? ID ????????????????????????????????? ID ???????????? ID ?????????????????????????? 1?2?3 ????? ID ?? 1???? ID ? 1 ????? django????? 1?2?3 ???? django????? 4 ???? Python?

??????????????????????????? ID ????????????? django ??? ID ? 1?????? ID ? 1 ?????? 1?2?3????? django ?? 3 ????

?????????????????????????????????????????????????? django ???????

ManyToManyField

ManyToManyField ???????????????????????????????????????????????????????????????????????????

?? ID ?? ??
1 title 1 body 1
2 title 2 body 2
3 title 3 body 3
4 title 4 body 4
?? ID ???
1 Django ??
2 Python ??
?? ID ?? ID
1 1
1 2
2 1
3 2

???????????????????????????????? ?? ID ????????????????????????????????? ID ? 1 ???????? ?? ID ? 1 ???????? ?? ID ? 2 ??????? 1 ????? 1?django ???????? 2?Python ???

????? ID ? 1 ???????? ?? ID ? 1 ???????? ?? ID ? 2 ??????? 1?django ?????????

?????????????????????????????????????????????????? django ???????

?????????????????????????????????????????????????????????

???? HelloGitHub ??????????????????