37 lines
1.7 KiB
Python
37 lines
1.7 KiB
Python
from django.contrib import admin
|
|
from .models import OperatorAccount, PlatformAccount, Video
|
|
|
|
@admin.register(OperatorAccount)
|
|
class OperatorAccountAdmin(admin.ModelAdmin):
|
|
list_display = ('username', 'real_name', 'email', 'phone', 'position', 'department', 'is_active', 'created_at')
|
|
list_filter = ('position', 'department', 'is_active')
|
|
search_fields = ('username', 'real_name', 'email', 'phone')
|
|
date_hierarchy = 'created_at'
|
|
readonly_fields = ('created_at', 'updated_at')
|
|
|
|
@admin.register(PlatformAccount)
|
|
class PlatformAccountAdmin(admin.ModelAdmin):
|
|
list_display = ('account_name', 'platform_name', 'operator', 'status', 'followers_count', 'last_posting', 'created_at')
|
|
list_filter = ('platform_name', 'status')
|
|
search_fields = ('account_name', 'account_id', 'description')
|
|
date_hierarchy = 'created_at'
|
|
readonly_fields = ('created_at', 'updated_at')
|
|
|
|
def get_queryset(self, request):
|
|
"""优化查询,减少数据库查询次数"""
|
|
queryset = super().get_queryset(request)
|
|
return queryset.select_related('operator')
|
|
|
|
@admin.register(Video)
|
|
class VideoAdmin(admin.ModelAdmin):
|
|
list_display = ('title', 'platform_account', 'status', 'views_count', 'likes_count', 'publish_time', 'created_at')
|
|
list_filter = ('status', 'created_at', 'publish_time')
|
|
search_fields = ('title', 'description', 'tags')
|
|
date_hierarchy = 'created_at'
|
|
readonly_fields = ('created_at', 'updated_at')
|
|
|
|
def get_queryset(self, request):
|
|
"""优化查询,减少数据库查询次数"""
|
|
queryset = super().get_queryset(request)
|
|
return queryset.select_related('platform_account', 'platform_account__operator')
|