2010-08-09 34 views

Trả lời

9

Để sửa đổi cách thức và nội dung hiển thị trong chế độ xem danh sách thay đổi, người dùng có thể sử dụng tùy chọn list_displayModelAdmin.

Hãy nhớ rằng, các cột được đưa ra trong list_display không phải là trường cơ sở dữ liệu thực không thể được sử dụng để sắp xếp, vì vậy cần phải cung cấp cho quản trị viên Django một gợi ý về trường cơ sở dữ liệu nào thực sự sử dụng để sắp xếp.

Thực hiện điều này bằng cách đặt thuộc tính admin_order_field cho hàm có thể gọi được sử dụng để bao bọc một số giá trị trong HTML chẳng hạn.

Ví dụ từ tài liệu Django cho các lĩnh vực đầy màu sắc:

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    color_code = models.CharField(max_length=6) 

    def colored_first_name(self): 
     return '<span style="color: #%s;">%s</span>' % (
          self.color_code, self.first_name) 
    colored_first_name.allow_tags = True 
    colored_first_name.admin_order_field = 'first_name' 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'colored_first_name') 

Tôi hy vọng một số những điều này sẽ giúp.

+1

Cảm ơn bạn, .allow_tags đã làm công việc. – kelvan

+0

Câu trả lời tuyệt vời @rebus. Có anyway để ràng buộc các 'color_first_name' chức năng và attrs để' PersonAdmin' như trái ngược với mô hình? Nó có vẻ kỳ lạ để xác định attrs quản trị cụ thể cho mô hình. – cooncesean

+1

@cooncesean Có, giá trị của list_display có thể là một tên chuỗi của phương thức trên mô hình hoặc lớp quản trị, hoặc nó có thể là một tham chiếu đến một cuộc gọi. [Xem tài liệu để biết thêm ví dụ] (https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display) –

2

Bên cạnh đó bạn có thể sử dụng

colored_first_name.short_description = 'first name' 

Đối với một tiêu đề cột đẹp

1

Đây là một câu hỏi cũ nhưng tôi sẽ thêm một ví dụ từ tài liệu cho Django 1.10allow_tags thuộc tính được sử dụng trong các câu trả lời được chấp nhận là không được dùng nữa kể từ Django 1.9 và bạn nên sử dụng format_html thay thế:

from django.db import models 
from django.contrib import admin 
from django.utils.html import format_html 

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    color_code = models.CharField(max_length=6) 

    def colored_name(self): 
     return format_html(
      '<span style="color: #{};">{} {}</span>', 
      self.color_code, 
      self.first_name, 
      self.last_name, 
     ) 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'last_name', 'colored_name') 
Các vấn đề liên quan