当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django ModelAdmin.formfield_for_choice_field用法及代码示例


本文介绍django.contrib.admin.ModelAdmin.formfield_for_choice_field的用法。

声明

ModelAdmin.formfield_for_choice_field(db_field, request, **kwargs)

formfield_for_foreignkeyformfield_for_manytomany 方法一样,formfield_for_choice_field 方法可以被覆盖以更改已声明选项的字段的默认表单字段。例如,如果超级用户可用的选项与普通员工可用的选项不同,您可以执行以下操作:

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_choice_field(self, db_field, request, **kwargs):
        if db_field.name == "status":
            kwargs['choices'] = (
                ('accepted', 'Accepted'),
                ('denied', 'Denied'),
            )
            if request.user.is_superuser:
                kwargs['choices'] += (('ready', 'Ready for deployment'),)
        return super().formfield_for_choice_field(db_field, request, **kwargs)

注意

在表单域上设置的任何choices 属性将仅限于表单域。如果模型上的相应字段设置了选项,则提供给表单的选项必须是这些选项的有效子集,否则在保存之前验证模型本身时,表单提交将失败并显示 ValidationError

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.contrib.admin.ModelAdmin.formfield_for_choice_field。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。