【问题标题】:Adding more validation to django admin user add forms向 django admin 用户添加更多验证添加表单
【发布时间】:2011-10-07 12:14:58
【问题描述】:

如果我们需要在 django admin 用户中添加更多验证,请添加表单,例如强制名字和姓氏和电子邮件.. 实现这一点的方法是什么??

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    您必须创建自己的用户表单并添加必填字段:

    class UserForm(forms.ModelForm):
        class Meta:
            model = User
    
        def __init__(self, *args, **kwargs):
            super(UserForm, self).__init__(*args, **kwargs)
            self.fields['email'].required = True
            self.fields['first_name'].required = True
            self.fields['last_name'].required = True
    

    然后覆盖您的 ModelAdmin 中的表单:

    class UserAdmin(admin.ModelAdmin):
        form = UserForm
    

    然后在注册你自己的之前取消注册普通管理员用户:

    admin.site.unregister(User)
    admin.site.register(User, UserAdmin)
    

    【讨论】:

      【解决方案2】:

      这扩展了 Geoffroy 的回答:

      from django.contrib.auth.forms import UserCreationForm
      class UserForm(UserCreationForm):
          class Meta:
              model = User
      
          def __init__(self, *args, **kwargs):
              super(UserForm, self).__init__(*args, **kwargs)
              self.fields['email'].required = True
              self.fields['first_name'].required = True
              self.fields['last_name'].required = True
      

      模型管理员:

      from django.contrib.auth.admin import UserAdmin
      class CustomUserAdmin(UserAdmin):
          add_form = UserForm
          add_fieldsets = (
            (None, {'fields':('username','password1','password2','first_name','last_name','email'),}),)
      

      然后按上述方式注销:

      admin.site.unregister(User)
      admin.site.register(User, CustomUserAdmin)
      

      【讨论】:

        【解决方案3】:

        只需编写您自己的form classtell the ModelAdmin,将其用作表单。

        【讨论】:

          猜你喜欢
          • 2016-09-05
          • 1970-01-01
          • 2013-09-18
          • 1970-01-01
          • 2014-06-18
          • 2021-09-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多