📅  最后修改于: 2023-12-03 15:11:47.589000             🧑  作者: Mango
Django 自带的管理界面 admin 是一个非常好用的工具,但是对于一些需要更定制化的应用来说,可能无法满足需求。这时候,我们就需要自定义 Django 管理界面,进行更良好的用户体验和更好的数据展示。
change_form_template
、change_list_template
等属性来指定使用的模板。# admin.py
class CustomModelAdmin(admin.ModelAdmin):
change_form_template = 'admin/custom_change_form.html'
list_display = ('id', 'name')
form
属性来指定使用的 Form。# forms.py
from django import forms
from .models import CustomModel
class CustomModelForm(forms.ModelForm):
def save(self, commit=True):
# 具体自定义的逻辑
return super().save(commit=commit)
class Meta:
model = CustomModel
fields = '__all__'
# admin.py
class CustomModelAdmin(admin.ModelAdmin):
form = CustomModelForm
list_display = ('id', 'name')
# admin.py
from django.contrib.admin import AdminSite
from django.contrib.admin.views.main import ChangeList
class CustomAdminSite(AdminSite):
site_header = 'My Custom Admin'
site_title = 'My Custom Admin'
class CustomChangeList(ChangeList):
def get_queryset(self, request):
# 具体自定义的逻辑
return super().get_queryset(request)
def get_results(self, request):
# 具体自定义的逻辑
return super().get_results(request)
# 更多自定义方法的实现,参考 ChangeList 类的源代码
class CustomModelAdmin(admin.ModelAdmin):
list_display = ('id', 'name')
CustomAdminSite.register(CustomModel, CustomModelAdmin)
admin_site = CustomAdminSite()
通过以上三种方式,我们可以实现对 Django 管理界面的自定义,提升用户体验和安全性。在实际项目中,具体使用哪种方式,取决于业务需求和个人爱好。