1. 程式人生 > >django自定義admin表頭顯示

django自定義admin表頭顯示

預設情況下,Django 顯示每個物件的 str() 返回的值。

如果想顯示多個值,並且按照一定順序則需要

from django.contrib import admin
from .models import BlogType, Blog

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    list_display = ('id', 'title', 'blog_type', 'author', 'get_read_num', 'created_time', 'last_updated_time')

如此則顯示定義的這些欄位,但是表頭中都是預設顯示的欄位的定義名,如果想自定義表頭,則修改model.py中欄位的verbose_name

class Blog(models.Model, ReadNumExpandMethod):
    title = models.CharField(max_length=50,verbose_name="標題")
    blog_type = models.ForeignKey(BlogType, on_delete=models.CASCADE,verbose_name="分類")
    content = RichTextUploadingField()
    author = models.ForeignKey(User, on_delete=models.CASCADE,verbose_name="作者")
    read_details = GenericRelation(ReadDetail)
    created_time = models.DateTimeField(auto_now_add=True,verbose_name="建立時間")
    last_updated_time = models.DateTimeField(auto_now=True,verbose_name="上次更新時間")    

其次修改外部模組的名字

需在model中新增

最後修改app名字

需修改在對應app的apps.py中新增

from django.apps import AppConfig

class BlogConfig(AppConfig):
    name = 'blog'
    verbose_name = '部落格管理'

還有在init.py中對應新增

default_app_config = 'blog.apps.BlogConfig'

如果想要修改外來鍵引入,或者內聯進來的欄位名則需要如下方式修改

class UserAdmin(admin.ModelAdmin):
    inlines = [ProfileInline]
    list_display = ('username', 'nickname', 'email', 'is_staff', 'is_active', 'is_superuser')

    def nickname(self, obj):
        return obj.profile.nickname #自定義欄位顯示資訊

    nickname.short_description = '暱稱' #欄位描述