django自定義admin表頭顯示
阿新 • • 發佈:2018-11-26
預設情況下,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 = '暱稱' #欄位描述