Django內建的管理系統,就類似phpmyadmin一樣,可以用網頁的方式來管理資料庫,請先確定urls.py內已經加入這個路徑。
# project/urls.py from django.contrib import admin from django.urls import path urlpatterns = [ path('admin/', admin.site.urls), ]
請先執行migrate,建立一個後臺使用者的資料表,再新增一個使用者來登入後台介面。
# apply admin models python manage.py migrate # create a user to login as admin python manage.py createsuperuser
打開瀏覽器'http://your-ip-address/admin'就可以看到管理介面的登入畫面,請輸入剛剛設定的帳號密碼。
首先,建立一個models紀錄產品(Product)的資訊:
# myapp.models.py class Product(models.Model): name = models.CharField(max_length=128) price = models.DecimalField(max_digits = 11, decimal_places = 2) count = models.IntegerField() created = models.DateTimeField(auto_now_add=True)請執行以下指令,讓這個models生效,makemigrations的目的是將models.py的內容轉成sql,若models.py有任何異動,可以透過migrations針對修改的部分進行更新。migrate則是執行sql,也就是實際建立新的table。
python manage.py makemigrations python manage.py migrate
執行結果請參考
方法一、
最簡單的使用方式,就是在admin.py註冊這個models。# myapp/admin.py from django.contrib import admin from .models import Product admin.site.register(Product)
此時,管理介面會多一個你註冊資料表Product。另外,上面的User則是一開始新增的superuser儲存的資料表。
新增資料後,預設的畫面如下,括號內的數字是自動遞增的ID,必須點開才能知道其他資訊,不方便管理。
方法二、
同方法一在admin.py內註冊models,此外我們重新定義回傳值,不再顯示流水編號,舉例我們能回傳產品名稱(name)。# myapp.models.py class Product(models.Model): name = models.CharField(max_length=128) price = models.DecimalField(max_digits = 11, decimal_places = 2) count = models.IntegerField() created = models.DateTimeField(auto_now_add=True) def __str__(self): # value to display return str(self.name)
效果如下:
方法三、
# myapp/admin.py from django.contrib import admin from .models import Product class ProductAdmin(admin.ModelAdmin): # fields to display list_display = ('id', 'name', 'price', 'created') admin.site.register(Product, ProductAdmin)
效果如下:
進階使用
沒有留言:
張貼留言