Django Unleashed筆記/第三章
於 2022年9月25日 (日) 19:08 由 Tankianting(討論 | 貢獻) 所做的修訂
- Django Model 和 SQLite 資料庫
- MVC 理論
- 自動生成 SQLite 的資料
- 關聯式資料庫
- persistency -> 狀態的資料和無狀態的程式
- Ch 30 講到 PostgreSQL
- Entity 是表格 (table)。
- pk = primary key:主鍵
- foreign key:外鍵
- unique identifier:單一識別子
- Django 中,我們只需要關注抽像關係和模型
- slug:儲存資料的字串 (unique) eg. "The quick brown fox" -> "the-quick-brown-fox"
- 用 slug 比較好
- 不應該區分大小寫
- 不是 identifier 的全部
- 使用 model
- myblog/organizer/model.py
from django.db import models # Create your models here. class Post(models.Model): # varchar title = models.CharField(max_length=63, #最大文字數 unique = true, #是否唯一 help_text = 'help of title of the document', verbose_name = "post's title" # 複雜文字 ) # 參數 db_index:被自動索引 slug = models.SlugField(max_length=100, unique_for_month='pub_date') # unique_for_month # 指確保同一月份不會強碰 text = models.TextField() # text pub_date = Models.DateField() # date startup = models.ForeignKey(Startup) # foreign key tags = models.ManyToManyField(Tag) # many-to-many relationship 多對多關係,建議放在持有attribute的欄位 # 其他還有 URLField, Emailfield 等
ManyToManyField(related_name = 'blog_posts')
# 使 startups 反向存取blog.posts
class Tags(Models.model): class Meta: ordering=['name'] #以name 遞增排序,['-name'] 表示遞減排序 get_latest_by = ['founded_date'] # 取最後一個的取出依據 verbose_name_plural = "ponies" # 複數呈現法 * 假設在表單呈現時,DisplayModel 通常被轉換為 display model。 * Django 的處理方式: ** 檢查 model -> 產生 migration file -> 產生 database ** 適宜多人分工 * {{code|./manage.py check}} # 檢查模型 * {{code|./manage.py makemigrations organizer}} # 生成 migration 檔 ** {{code|./manage.py makemigrations organizer}} ** migrations/0001_initial.py 等等是 migration 檔 *** {{code|./manage.py sqlmigrate blog 0001}} # 產生對應的 sql 檔 * {{code|./manage.py migrate}}