Quản Trị Trang Admin Trong Django:
- Phần xuất bản nội dung do quản trị viên website phụ trách, bao gồm xem, thêm, sửa, xóa dữ liệu;
- Trong dự án Django, trang quản trị Admin được kích hoạt mặc định: tùy chọn trang danh sách, tùy chọn trang chỉnh sửa, ghi đè mẫu.
# Chuẩn bị ban đầu
Kích hoạt cơ sở dữ liệu mysql + định nghĩa lớp mô hình RegionData + tạo tài khoản quản trị + đăng ký lớp mô hình
Sau đó, ghi đè phương thức __str__ của mô hình
# Điều khiển hiển thị trang quản trị
- Lớp ModelAdmin có thể kiểm soát cách thức hiển thị mô hình trong giao diện Admin, chủ yếu bao gồm cách hiển thị trên trang danh sách, cách hiển thị trên trang thêm/sửa
- Định nghĩa lớp quản trị RegionAdmin trước khi đăng ký lớp mô hình
class RegionAdmin(admin.ModelAdmin):
pass
- Có hai cách sử dụng lớp quản trị
1. Tham số đăng ký
admin.site.register(RegionData, RegionAdmin)
2. Sử dụng decorator
@admin.register(RegionData)
class RegionAdmin(admin.ModelAdmin):
pass
Tùy Chọn Trang Danh Sách
# Thiết lập số lượng mục hiển thị trên mỗi trang, mặc định là 100 mục/trang
list_per_page = 100
- Vị tùy chọn Action: Mặc định có một ở đầu trang quản trị, không có ở cuối trang
# Thêm một ở phần đầu
actions_on_top = True
# Thêm một ở phần cuối
actions_on_bottom = False
- Các cột trong danh sách: Chỉ định các trường của mô hình nào sẽ hiển thị dưới dạng cột
# Chỉ định các trường cần hiển thị
list_display = ['truong1', 'truong2', ...]
# Định nghĩa phương thức của mô hình làm cột
def tieu_de(self):
return self.ten
# Chỉ định phương thức làm cơ sở sắp xếp cột
tieu_de.admin_order_field = 'ten'
- Phương thức mô hình làm cột: Cả phương thức mô hình và trường mô hình đều có thể được chỉ định làm cột để hiển thị trên giao diện quản trị
- Tiêu đề cột: Mặc định là tên thuộc tính hoặc phương thức, có thể thiết lập thành tên khác. Cách thiết lập
1. Sử dụng thuộc tính short_description
- ten_phuong_thuc.short_description = 'Tiêu đề cột'
2. Sử dụng thuộc tính verbose_name
- Bộ lọc thanh bên phải: Chỉ nhận trường, sẽ liệt kê các giá trị của trường tương ứng để lọc nhanh, thường dùng cho các trường có giá trị trùng lặp
list_filter = ['truong1', 'truong2', ...]
- Khung tìm kiếm: Dùng để tìm kiếm giá trị của các trường chỉ định, hỗ trợ tìm kiếm mờ
search_fields = ['truong1', 'truong2', ...]
Tùy Chọn Trang Chỉnh Sửa
- Thứ tự trường: Chỉ định thứ tự các trường trên giao diện chỉnh sửa theo thứ tự trong danh sách
fields = ['truong1', 'truong2', ...]
- Nhóm trường: Nhóm trường fieldsets và thứ tự fields chỉ chọn một trong hai để sử dụng
fieldsets = (
('Tiêu đề nhóm 1', {'fields': ('truong1', 'truong2')}),
('Tiêu đề nhóm 2', {'fields': ['truong3', 'truong4']}),
)
Trong quan hệ một-nhiều, có thể chỉnh sửa đối tượng nhiều-nhiều trên trang chỉnh sửa của phía một
- Cách nhúng đối tượng nhiều-nhiều bao gồm bảng và khối hai loại
Loại InlineModelAdmin: Biểu thị nhúng trang chỉnh sửa của mô hình liên kết
- Lớp con StackedInline: Nhúng dưới dạng khối
- Lớp con TabularInline: Nhúng dưới dạng bảng
Trong file admin.py, tạo lớp RegionStackedInline, kế thừa từ admin.StackedInline
Ghi Đè Mẫu
- Khi cần sửa đổi kiểu dáng trang quản trị, có thể ghi đè mẫu trang
Tạo thư mục admin trong thư mục templates
Sau đó tạo file base_site.html trong thư mục admin