這篇博客會教大家做一個關於手搖飲的應用程序,我會分兩部分介紹(上下篇)
-
利用Django自帶的後台管理類 admin呈現一個能增刪改的功能
-
透過Django 獨有的
對象關係映射
(ORM ,Object-Relational Mapping)對數據庫進行操作
創建項目
python manage.py startproject mysite
創建應用
python manage.py startapp drink_app
創建好會長這樣
接下來準備來去創建數據庫模型。用
模型類
生成
數據庫表
drink_app / models.py
from django.db import models
from django.contrib.auth.models import User
from django.utils import timezone
class Beverage_shop(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
shop_name = models.CharField('店名', max_length=50, default='', blank=True)
telephone = models.CharField('店家電話', max_length=10, default='', blank=True)
address = models.TextField('地址', default='', blank=True)
date_time = models.DateField('時間', default=timezone.now)
class Meta:
db_table = 'tb_Beverage_shop'
def __str__(self):
return self.shop_name
class Drink(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
drink_name = models.CharField('品名', max_length=10, blank=True)
price = models.DecimalField('台幣TWD$', max_digits=2, decimal_places=0)
description = models.TextField('描述', blank=True)
date_time = models.DateField('時間', default=timezone.now)
image = models.ImageField('圖片', upload_to='images', blank=True)
beverage_shop = models.ForeignKey(Beverage_shop, on_delete=models.CASCADE, related_name='drink')
class Meta:
db_table = 'tb_drink'
def __str__(self):
return self.drink_name
class Evaluation(models.Model):
author = models.ForeignKey(User, on_delete=models.CASCADE)
beverage_shop =
models.ForeignKey(Beverage_shop, on_delete=models.CASCADE)
star = ((1, 'one'), (2, 'two'), (3, 'three'), (4, 'four'), (5, 'five'))
star_choices = models.PositiveSmallIntegerField('評價', default=3, blank=True, choices=star)
date_time = models.DateField('時間', default=timezone.now)
recommend = models.TextField('建議', default='', blank=True)
class Meta:
db_table = 'tb_evaluation'
def __str__(self):
return self.recommend
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
大家可以去看
Django官方文檔
這裡我只會提到比較該注意的 !
ForeignKey(to, on_delete, **options)
-
在上面代碼可以看到ForeignKey這是一個
單對多
關係,裡頭有兩個位置參數,一個是
被關聯的類
,一個是
on_delete
的選項,當 on_delete = models.CASCADE表示
級聯刪除
。現在假如你刪除了
A
數據庫表的一筆資料,那跟他關聯的資料表就會把他關聯的那筆資料一併刪除 (很淺顯易懂吧><
-
blank = True 表示此字段欄位,為必填, default = ’ ’ 表示為預設,
related_name = 'drink ’
有利於我們等等要實現的反向查詢喔 ! ! !
-
Meta類,其實有很多選項可以選 ! 這裡用到 db_table = ’ ', 可以改自己喜歡的資料表名稱,不然預設是app應用名 + 類名 = drink_app_evaluation
-
__ str __( ) 魔法方法
在
Django Console
交戶查詢時,方面我們閱讀的對象方法
By the Way 之後會做表格會有更詳細內容,那這裡剛好使用到就講解比較重要的
輸入
python manage.py makemigrations
系統會發現models.py有更動 !
再接著輸入
python manage.py migrate
同步更新數據庫,現在已經創建了3張數據庫表 !
你可以打開這三張表看看,會發現都是空的,因為根本就還沒有存入資料xD
Django 預設連接的資料庫是
sqlite3
,當然可以使用其他資料庫,匹如 PostgreSQL(關聯式資料庫)、MySQL(關聯式資料庫)、MongoDB(非關聯式資料庫)
現在我們要去這裡註冊數據庫模型,會慢慢體驗到 Django的強大
drink__app / admin.py
Step1 註冊資料庫模型:
裡面的類都繼承了admin.ModelAdmin, 提供了後台呈現的樣子
list_display是指 後台要顯示的欄位,當然它也是有更多選項,不只單單一個,如果還是不懂的等等看到就知道了 !
from django.contrib import admin
from .models import *
class Beverage_shop_Admin(admin.ModelAdmin):
list_display = ('author', 'shop_name', 'telephone', 'address', 'date_time')
class DrinkAdmin(admin.ModelAdmin):
list_display = ('author', 'drink_name', 'price', 'description', 'beverage_shop', 'date_time')
class EvaluationAdmin(admin.ModelAdmin):
list_display = ('author', 'beverage_shop', 'star_choices', 'recommend', 'date_time')
admin.site.register(Beverage_shop, Beverage_shop_Admin)
admin.site.register(Drink, DrinkAdmin)
admin.site.register(Evaluation, EvaluationAdmin)
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
Step2 建立超級使用者:
這聽起來很像在搞笑,但就是這樣ㄎ ㄎ
python manage.py createsuperuser
創建好就可以啟動伺服器了,就大功告成了
python manage.py runserver
記得在本地網址後面加上 /admin/
登入你剛剛創建的帳號密碼
登入之後會看到你剛剛創建的資料表出現在上面了,你們可以一一新增
Beverage_shops 新增飲料店資訊
知道list_display的用途了吧 ! ! !
Drinks 新增飲料品項,以及所購買店家
Evaluation 新增對這家飲料店的評價以及建議
改
的話很簡單大家摸索一下就會了
接下來是刪掉剛剛新增的飲料店貓咪工坊
左下有
刪除
鍵
一旦點選刪除
一旦按下 Yes I am Sure ! 3張表資料就都不見了?!
這是為什麼 ?
這就留給你,自己為自己解答囉 @@