> 文章列表 > Django | 一文简单搞懂Django中的fieldsets和add_fieldsets

Django | 一文简单搞懂Django中的fieldsets和add_fieldsets

Django | 一文简单搞懂Django中的fieldsets和add_fieldsets

文章目录

  • fieldsets
  • add_fieldsets

fieldsets

在 Django 中,fieldsets 是一种用于定制管理后台表单的选项。在 Django 的 ModelAdmin 类中,我们可以定义 fieldsets 属性,它是一个包含元组或列表对象的序列,每个元素都表示一个分组。每个分组由一个标题和一个包含字段名称的集合组成。

使用 fieldsets 可以将管理后台表单分为多个分组,并在每个分组中显示指定的字段,从而使得表单更加易于阅读和操作。例如,我们可以将一个包含大量字段的模型,分成多个 fieldsets,每个 fieldset 包含几个相关字段。这样做不仅方便了管理员查看和编辑数据,还能增强了用户体验。

下面是一个示例代码,演示了如何在 Django 中使用 fieldsets

from django.contrib import admin
from .models import MyModelclass MyModelAdmin(admin.ModelAdmin):fieldsets = [('Personal info', {'fields': ['first_name', 'last_name', 'email']}),('Address', {'fields': ['address', 'city', 'state', 'zip_code']}),('Other info', {'fields': ['phone_number', 'date_of_birth']}),]admin.site.register(MyModel, MyModelAdmin)

在上面的代码中,我们定义了一个 MyModelAdmin 类,并设置了三个 fieldsets:Personal info(个人信息)、Address(地址) 和 Other info(其它信息)。每个 fieldset 包含一些字段,以键值对的形式表示。在管理后台中,这些字段将按照顺序分组,并显示在相应的 fieldset 中。

add_fieldsets

add_fieldsets 是 Django 中 ModelAdmin 类的一个属性,用于定制管理后台添加新记录时的表单选项。它与 fieldsets 属性类似,不同之处在于它只适用于添加新记录时的表单。

add_fieldsets 允许我们指定哪些字段是在添加新记录时必填的,哪些字段是可选的。它也可以将字段分为不同的分组,以便更好地组织表单。例如,如果我们的模型有很多字段,但是只有一些字段在创建新记录时是必填的,我们可以通过定义 add_fieldsets 来确保这些必填字段不会被漏掉。

下面是一个示例代码,演示了如何在 Django 中使用 add_fieldsets

from django.contrib import admin
from .models import MyModelclass MyModelAdmin(admin.ModelAdmin):fieldsets = [('Personal info', {'fields': ['first_name', 'last_name', 'email']}),('Address', {'fields': ['address', 'city', 'state', 'zip_code']}),('Other info', {'fields': ['phone_number', 'date_of_birth']}),]add_fieldsets = [('Required Information', {'classes': ('wide',),'fields': ('first_name', 'last_name', 'email', 'password1', 'password2'),}),('Optional Information', {'classes': ('wide',),'fields': ('address', 'city', 'state', 'zip_code', 'phone_number', 'date_of_birth'),}),]admin.site.register(MyModel, MyModelAdmin)

在上面的代码中,我们定义了一个 MyModelAdmin 类,并设置了两个 add_fieldsets:Required Information(必填信息)和 Optional Information(可选信息)。在 Required Information 分组中,我们要求必须填写 first_name、last_name、email、password1 和 password2 这些字段。在 Optional Information 分组中,我们允许填写其它所有字段。注意,这里我们用到了 'wide' 类,它是一个 CSS 样式类,用于将表单元素水平排列。

通过定义 add_fieldsets,我们可以控制添加新记录表单的可编辑字段,从而增强了用户体验。