# -*- coding: utf-8 -*- # Register your models here. from django.contrib import admin from django.contrib.auth.admin import UserAdmin # 从django继承过来后进行定制 from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.forms import UserCreationForm, UserChangeForm # admin中涉及到的两个表单 from apps.AppInfoManage.models import MyUser, User_Group, User_Log, Logo class User_exAdmin(admin.ModelAdmin): # 验证码部分展示 list_display = ('valid_code', 'valid_time', 'email') # custom user admin class MyUserCreationForm(UserCreationForm): # 增加用户表单重新定义,继承自UserCreationForm def __init__(self, *args, **kwargs): super(MyUserCreationForm, self).__init__(*args, **kwargs) # 必填项: self.fields['email'].required = True # 为了让此字段在admin中为必选项,自定义一个form # self.fields['user_remark'].required = True # 其实这个name字段可以不用设定required,因为在models中的MyUser类中已经设定了blank=False,但email字段在系统自带User的models中已经设定为 #self.fields['user_phone'].required = True # email = models.EmailField(_('email address'), blank=True),除非直接改源码的django(不建议这么做),不然还是自定义一个表单做一下继承吧。 class MyUserChangeForm(UserChangeForm): # 编辑用户表单重新定义,继承自UserChangeForm def __init__(self, *args, **kwargs): super(MyUserChangeForm, self).__init__(*args, **kwargs) self.fields['email'].required = True class CustomUserAdmin(UserAdmin): def __init__(self, *args, **kwargs): super(CustomUserAdmin, self).__init__(*args, **kwargs) self.list_display = ( 'username', # 'user_remark', 'user_rank', 'user_phone', 'base_name', 'user_picture', 'base_show', 'user_pro', 'user_city', 'user_area', 'email', 'is_active', 'is_staff', 'is_superuser', 'is_agency', 'user_agency' ) self.search_fields = ('username', 'email', 'user_phone') self.form = MyUserChangeForm # 编辑用户表单,使用自定义的表单 self.add_form = MyUserCreationForm # 添加用户表单,使用自定义的表单 # 以上的属性都可以在django源码的UserAdmin类中找到,我们做以覆盖 # 这个方法在源码的admin/options.py文件的ModelAdmin这个类中定义,我们要重新定义它,以达到不同权限的用户,返回的表单内容不同 def changelist_view(self, request, extra_context=None): # 非super用户不能设定编辑是否为super用户: if not request.user.is_superuser: self.fieldsets = ((None, {'fields': ('username', 'password',)}), # 个人信息栏:_ 将('')里的内容国际化,这样可以让admin里的文字自动随着LANGUAGE_CODE切换中英文、 (_('Personal info'), {'fields': ( 'user_remark', 'user_rank', 'user_phone', 'user_picture', 'base_name','base_show', 'user_pro', 'user_city', 'user_area', 'email')}), # 权限栏: (_('Permissions'), { 'fields': ('is_active', 'is_staff', 'groups')}), # 重要日期栏: (_('Important dates'), { 'fields': ('last_login', 'date_joined')}), ) # 这里('Permissions')中没有'is_superuser',此字段定义UserChangeForm表单中的具体显示内容,并可以分类显示 # 非超级用户创建用户: self.add_fieldsets = ((None, {'classes': ('wide',), 'fields': ('username', 'password1', 'password2', 'email', 'user_remark', 'user_rank', 'user_phone', 'user_picture', 'base_name', 'base_show', 'user_pro', 'user_city', 'user_area', 'is_active','is_staff', 'groups'), }), ) # 此字段定义UserCreationForm表单中的具体显示内容 # super账户可以做任何事 else: self.fieldsets = ((None, {'fields': ('username', 'password',)}), # 个人信息栏: (_('Personal info'), {'fields': ( 'user_remark', 'user_rank', 'user_phone', 'user_picture','base_name', 'base_show', 'user_pro', 'user_city', 'user_area', 'email','user_agency','user_logo','user_header')}), # 权限栏: (_('Permissions'), { 'fields': ('is_active', 'is_staff', 'is_superuser','is_agency', 'groups')}), # 重要日期栏: (_('Important dates'), { 'fields': ('last_login', 'date_joined', 'expire_date')}), ) # 超级用户创建用户: self.add_fieldsets = ((None, {'classes': ('wide',), 'fields': ('username', 'password1', 'password2', 'email', 'user_remark', 'user_rank', 'base_name', 'user_phone', 'user_picture', 'base_show', 'user_pro', 'user_city', 'user_area', 'is_active', 'is_staff', 'is_superuser', 'groups' ), }), ) return super(CustomUserAdmin, self).changelist_view(request, extra_context) # 设置每页显示记录数: list_per_page = 10 admin.site.register(MyUser, CustomUserAdmin) #----------------------------------------------------------------------------------------- # 定制自定义用户组User_Group的 Adminx 后台 class User_GroupAdmin(admin.ModelAdmin): list_display = [ 'id', 'name', 'role_describe', 'role_cre_time', 'role_cre_user', 'role_logo', 'role_footer' ] fields = ( 'name', 'role_describe', 'role_cre_time', 'role_cre_user', 'role_logo', 'role_footer' ) # 设置每页显示记录数: list_per_page = 10 admin.site.register(User_Group, User_GroupAdmin) # 定制自定义用户操作日志User_Log的Admin 后台 @admin.register(User_Log) class User_LogAdmin(admin.ModelAdmin): list_display = [ # 'id', 'log_user', 'log_time', 'log_ip', 'log_desc', ] fields = ( # 'id', 'log_user', 'log_time', 'log_ip', 'log_desc', ) search_fields = [ 'log_user', ] list_filter = ( 'log_user', 'log_ip', 'log_time' ) # 设置点击哪些字段可以进入修改页面: list_display_links = ( 'log_user', ) # 设置每页显示记录数: list_per_page = 10 # @admin.register(Agency) # class AgencyAdmin(admin.ModelAdmin): # list_display = [ # 'agency_name', # 'agency_desc', # ] # fields = ( # 'agency_name', # 'agency_desc' # ) # search_fields = [ # 'agency_name', # ] # list_display_links = ( # 'agency_name', # 'agency_desc' # ) # list_per_page = 10 # Logo的Admin 后台 @admin.register(Logo) class LogoAdmin(admin.ModelAdmin): list_display = [ 'role_describe', 'role_cre_time', 'role_cre_user', 'role_logo', 'role_footer', 'role_header' ] fields = ( 'role_describe', 'role_cre_time', 'role_cre_user', 'role_logo', 'role_footer', 'role_header' ) search_fields = [ 'role_describe', ] list_filter = ( 'role_cre_time', ) # 设置点击哪些字段可以进入修改页面: list_display_links = ( 'role_describe', ) # 设置每页显示记录数: list_per_page = 10