Django中注册模型到admin的方式
已于 2025年02月25日 16:05 修改
访问次数:16
在 Django 中,admin.register() 是一种用于注册模型(如 Person)到 Django 后台管理界面的方法。你提到的 admin.register(Person) 是用来将 Person 模型与 Django admin 界面连接的方式。
背景
通常,你需要在 admin.py 文件中定义模型的管理界面,以便在 Django 后台进行增、删、改、查操作。传统的做法是通过 admin.site.register() 来注册模型,但是从 Django 1.9 开始,Django 提供了一个更优雅的装饰器 @admin.register() 来进行模型的注册。
1. 传统方式:使用 admin.site.register()
from django.contrib import admin
from .models import Person
# 注册模型到 Django admin
admin.site.register(Person)
2. 推荐方式:使用 @admin.register() 装饰器
from django.contrib import admin
from .models import Person
# 使用装饰器注册模型到 Django admin
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'age') # 可以自定义要显示的字段
search_fields = ('name',) # 设置搜索框可以搜索的字段
3. 解释
- @admin.register(Person):这是一个装饰器,用来将 Person 模型与 PersonAdmin 管理界面类相关联。你可以通过这种方式注册模型,同时为它提供额外的管理选项。
- PersonAdmin:这是自定义的后台管理界面类,继承自 admin.ModelAdmin。在这个类中,你可以定义和配置后台显示的方式。例如: list_display:指定在列表页面显示哪些字段。 search_fields:指定在后台的搜索框可以搜索哪些字段。
4. 常见自定义项
在 PersonAdmin 类中,你可以自定义许多与管理界面相关的选项。以下是一些常用的自定义选项:
list_display:定义模型在列表页面显示的字段。search_fields:定义可以用于后台搜索的字段。list_filter:定义可以用于过滤的字段。ordering:定义默认排序的字段。list_per_page:定义每页显示多少条数据。fieldsets:定义模型表单的显示方式,分组表单字段。
例子:
from django.contrib import admin
from .models import Person
@admin.register(Person)
class PersonAdmin(admin.ModelAdmin):
list_display = ('id', 'name', 'age', 'email') # 自定义列表显示的字段
search_fields = ('name', 'email') # 允许后台通过姓名和邮箱搜索
list_filter = ('age',) # 按年龄过滤
ordering = ('name',) # 默认按姓名排序
list_per_page = 20 # 每页显示20条数据
总结
admin.register()提供了更加简洁和优雅的方式来注册模型,同时能够自定义后台管理界面的行为。PersonAdmin类允许你定制后台界面,例如:显示哪些字段、如何排序、如何过滤等。
这种方式使得 Django admin 界面更具灵活性和可定制性,能够满足各种管理需求。如果你有其他关于 admin 或者模型注册的疑问,可以继续提问!
评论(0)