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 ??????????????????