Django中注册模型到admin的方式

在 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)