Tùy chỉnh trang quản trị
Thuộc phần Model và trang quản trị trong hành trình Django của Coddy. Bài học 21 trên 23.
Danh sách sách trong trang quản trị chỉ có một cột, giá trị __str__ của mỗi cuốn sách, và không có cách nào để tìm kiếm. Lớp ModelAdmin, được đăng ký bằng decorator, sẽ thay đổi điều đó. Với một Loan có khóa ngoại ForeignKey book:
@admin.register(Loan)
class LoanAdmin(admin.ModelAdmin):
list_display = ["book", "friend", "lent_on", "returned"]
search_fields = ["friend", "book__title"]
list_filter = ["returned", "lent_on"]list_display chọn các cột; cột khóa ngoại hiển thị giá trị __str__ của hàng liên quan, còn trường nhiều-nhiều không thể làm cột. search_fields thêm hộp tìm kiếm. Để tìm kiếm qua khóa ngoại, hãy ghi tên trường của mô hình kia sau hai dấu gạch dưới, book__title: chỉ dùng book thì đó là một liên kết, không phải văn bản, và thao tác tìm kiếm sẽ gây lỗi. list_filter thêm một thanh bên chứa các bộ lọc.
Decorator thực hiện điều tương tự như admin.site.register(Loan, LoanAdmin). Hãy đăng ký mỗi mô hình một lần: đăng ký lần thứ hai sẽ khiến trang web dừng hoạt động với lỗi AlreadyRegistered.
Thử thách
DễTrong books/admin.py, hãy đăng ký Book với BookAdmin thay cho cách đăng ký thông thường. Danh sách sách cần có:
- các cột
title,author,year,genrevàis_read - ô tìm kiếm sách theo tiêu đề hoặc tên tác giả
- thanh bên lọc theo
genrevàis_read
Chạy lại createsuperuser, đăng nhập và tìm herbert trong mục sách: Children of Dune và Dune.
Tự làm thử
from django.contrib import admin
from .models import Author, Book, Tag
admin.site.register(Book)
admin.site.register(Author)
admin.site.register(Tag)
Bài học này có một bài trắc nghiệm ngắn. Bắt đầu bài học để trả lời và theo dõi tiến độ.
Tất cả bài học trong Model và trang quản trị
Tự luyện tập: Playground Django