def get_form_layout(self): # 判断是否是编辑页面 # if self.org_obj: self.form_layout = ( Main( Fieldset('讲师信息', 'teacher', 'course_org', css_class='unsort no_title' ), Fieldset('基本信息', 'name', 'describe', Row('learn_time', 'degree'), Row('category', 'tag'), ), ), Side( Fieldset('情况', 'students', 'fav_nums', 'click_nums', ), ), Side( Fieldset('选择', 'is_class', 'is_banner', ), ) ) return super(NewCouseAdmin, self).get_form_layout()
class MoreActicl(object): list_display = ['title', 'body', 'auth'] readonly_fields = ['detail'] # 只读字段 exclude = ['auth'] # 不显示某个字段 form_layout = ( Fieldset( u'', Row('title', 'auth'), # Row表示将里面的字段作为一行显示 Row('classify'), css_class='unsort' # 不让区块拖动 ), Fieldset( ('正文内容'), # Fieldset第一个参数表示区块名称 'body', ), Fieldset( ('备注'), Row('detail'), css_class='unsort no_title' # no_title是不显示区块的title名称 ), TabHolder( Tab( 'body-raw', Field('title', css_class="extra"), # css_class="extra"可以将输入框占一整行 Field('body'), css_class='unsort'), Tab('body-json', Field('body', )), css_class='unsort', ))
class smartpipeAdmin(object): list_display = [ 'caliber', 'name', 'sn', 'label', 'vendor_id'] search_fields = [ 'caliber', 'sn', 'label', 'vendor_id'] list_filter = [ 'caliber', 'sn', 'label', 'vendor_id'] model_icon = 'fa fa-map' form_layout = ( Main( Fieldset('1、基本属性', 'name', Row('caliber', 'sn'), Row('label', 'vendor_id')), Fieldset('4、安装信息', 'project_id', 'depth', 'install_date', 'interface', 'pipeline', 'longitude', 'latitude'), ) # Side( # Fieldset('其它', # 'buy_date', 'expire_date', 'note', 'attachment', 'date'), # ) )
class ControlActicl(object): list_display = ['title', 'body', 'auth'] # readonly_fields = ['detail'] #设置只读字段 # exclude = ['auth'] # 不显示某个字段 # 传入元组 form_layout = ( Fieldset(('基本信息'), Row('title', 'auth'), # Row表示将里面的字段显示为一行 Row('classify'), css_class='unsort', # 不让区块移动 ), Fieldset(('正文内容'), # Fieldset第一个参数表示区块名称 'body', css_class='unsort', ), Fieldset(('备注'), Row('detail'), css_class='unsort no_title', # no_title是不显示区块的名称 ), TabHolder( Tab('body-row', Field('title', css_class='extra'), Field('body'), css_class='unsort' ), Tab('body-json', Field('body', ), ), css_class='unsort', ) )
def get_form_layout(self): self.form_layout =( Main( Fieldset("讲师信息", "teacher","course_org", # css_class='unsort no_title' ), Fieldset("基本信息", "name","desc", Row("learn_times","degree"), Row("category","tag"), ), ), Side( Fieldset("访问信息", Row("students","fav_num","click_num") ), Fieldset("课程信息", "youneed_know","teacher_tell","is_classics" ) ), Side( Fieldset("封面信息", "image", "notice", "is_banner","is_index" ) ) ) return super(CourseAdmin, self).get_form_layout()
class ControlActicl(object): list_display = ['title', 'body', 'auth'] #readonly_fields = ['detail'] # 只读字段 #exclude = ['auth'] # 不显示某个字段 form_layout = [ Fieldset('主要信息', Row('title', 'auth'), Row('classify'), css_class='unsort'), Fieldset( ('正文内容'), # Fieldset第一个参数表示区块名称 'body', css_class='unsort'), Fieldset( ('备注'), Row('detail'), css_class='unsort no_title' # no_title是不显示区块的title名称 ), TabHolder( Tab('body-raw', Field('title', css_class="extra"), Field('body'), css_class='unsort'), Tab('body-json', Field('body', )), css_class='unsort', ) ]
class CourseAdmin(object): list_display = ['name','time','type','level','introduction','studey_num','create_time','update_time','section','teacher'] search_fileds = ['name','time','type','level'] list_filter = ['name','time','type','level'] #dj39 form_layout = ( Fieldset(u'', Row('name','time','type'), Row('level','studey_num','teacher'), #模块不可以拖动 css_class='unsort' ), Fieldset(('描述'), Row('introduction'), ), Fieldset(('章节'), Row('section'), #不显示区块的title名 css_class='unsort no_title' ), #dj41 TabHolder( Tab('标签1', Field('name',css_class="extra"),#输入框可以占一整行 Field('time'), css_class='unsort'), Tab('标签2', Field('type','level'), Field('teacher'), ) ), )
def get_form_layout(self): # 修改显示布局 if self.org_obj: # 判断是否时新增,返回真则不是 self.form_layout = ( Main( # 左侧显示 Fieldset('讲师信息', 'teacher', 'course_org', css_class='unsort no_title' ), Fieldset('基本信息', 'name', 'desc', 'notice', 'youneed_know', 'teacher_tell', 'detail', Row('learn_times', 'degree'), Row('category', 'tag'), ), ), Side( # 右侧小框显示 Fieldset('访问信息', 'click_nums', 'students', 'fav_nums' ), Fieldset('是否选择', 'is_banner', 'is_classics' ), ), ) return super(NewCourseAdmin, self).get_form_layout()
def get_form_layout(self): if self.org_obj: self.form_layout = (Main( Fieldset("讲师信息", 'teacher', 'course_org', css_class='unsort no_title'), Fieldset( "基本信息", 'name', 'desc', Row('learn_times', 'degree'), Row('category', 'tag'), 'youneed_know', 'teacher_tell', 'detail', ), ), Side( Fieldset("访问信息", 'fav_nums', 'click_nums', 'students', 'add_time'), ), Side( Fieldset("选择信息", 'is_banner', 'is_classics'), )) return super(NewCourseAdmin, self).get_form_layout()
class ChargingGunInline(object): """ 枪口信息 """ model = ChargingGun extra = 1 # exclude = ['out_trade_no'] style = "accordion" # readonly_fields = ['qrcode'] form_layout = ( Fieldset( '枪口信息', Row('gun_num', 'charg_status'), Row('gun_type', 'nationalstandard'), Row( AppendedText('voltage_upper_limits', 'V'), AppendedText('voltage_lower_limits', 'V'), ), Row( AppendedText('current', 'A'), AppendedText('power', 'KW'), ), Row('work_status', None), Row('cc_status', 'cp_status'), Row('gun_temp_status', 'elec_lock_status'), Row('relay_status', 'fuse_status'), Row('gun_temp', 'cab_temp'), ), Fieldset( '其他信息', Row('subscribe_min', 'qrcode'), ), )
def get_form_layout(self): if self.org_obj: # 只有在修改页面才变 self.form_layout = ( Main( # Fieldset表示一块 Fieldset('讲师信息', 'teacher', 'course_org', css_class='unsort no_title' ), Fieldset('基本信息'), 'name', 'desc', Row('learn_times', 'degree'), Row('category', 'tag'), 'you_need_know', 'teacher_tell', 'detail', ), # Side( # # 右侧的信息 # Fieldset('访问信息'), # 'fav_nums', 'click_nums', 'students', 'add_times' # ), Side( # 右侧的信息 Fieldset('选择信息'), 'is_classics', 'is_banner', 'image' ), ) return super(NewCourseAdmin, self).get_form_layout()
class AuthorBlogAdmin(CommonSetting): exclude = ('id', 'author') list_display = ('title', 'cat', 'is_active', 'original', 'tags', 'read', 'like', 'url') search_fields = ('title', ) list_filter = ('add', 'mod') readonly_fields = ('read', 'like', 'add', 'mod', 'is_active', 'is_top', 'is_fine', "apply_active", "apply_top", "apply_fine") form_layout = (Main( Fieldset(_('基本信息'), Row('title', 'cat'), Row('cover', 'tags'), Row('music')), Fieldset(_('标记信息'), Row('apply_active', ), Row('apply_top', ), Row('apply_fine')), Fieldset( _('正文'), Row('source'), Row('content'), ), Fieldset( _('统计信息'), Row('read', 'like'), Row('add', 'mod'), ), ), Side(Fieldset(_('状态'), 'is_active', 'is_top', 'is_fine'))) def queryset(self): q = super().queryset() return q.filter(author_id=self.request.user.id) def save_models(self): """ 01.保存数据到数据库中时提取作者为当前用户 02.修复代码块bug """ if (not hasattr(self.new_obj, 'author')) or (not self.new_obj.author): self.new_obj.author = self.request.user self.new_obj.save() def has_add_permission(self): # 写文章的权限 if self.request.user.is_superuser: return True return self.request.user.is_active def has_delete_permission(self, obj=None): # 删除权限 if obj is not None: if self.request.user.is_superuser: return True if self.request.user.id == obj.author.id: return True return False def has_change_permission(self, obj=None): if obj is not None: if self.request.user.is_superuser: return True if self.request.user.id == obj.author.id: return True return False
class CityAdmin(object): list_display = ('name', 'status', 'desc', 'cover') list_display_links = ['name',] # 在展示的字段上 添加的超链接 list_filter = ['create_time', 'name'] # 过滤字段 search_fields = ['name',] # 检索的字段 form_layout = ( Fieldset( '城市', Row('name', 'status', ), Row('cover', 'province',), Row('desc'), ), ) def operator(self, obj): """ :param obj: 当前对象 """ return format_html( '<a href="{}">编辑</a>', reverse('xadmin:travel_province_change', args=(obj.id,)) ) operator.short_description = '操作'
def get_form_layout(self): if self.org_obj: self.form_layout = ( Main( Fieldset('', 'username', 'password', css_class='unsort no_title' ), Fieldset(_('Personal info'), Row('level', 'credit'), Row('sex', 'email'), Row('phone', ), 'address', 'signature', ), Fieldset(_('Important dates'), 'last_login', 'date_joined' ), ), Side( Fieldset(_('Status'), 'is_active', 'is_staff', 'is_superuser', ), ) ) return super(UserAdmin, self).get_form_layout()
def get_form_layout(self): if self.org_obj: self.form_layout = (Main( Fieldset('', 'username', 'password', css_class='unsort no_title'), Fieldset(_('Personal info'), Row('zh_name', 'user_id'), Row( 'email', 'home_page', ), css_class='unsort'), Fieldset(_('Permissions'), 'groups', 'user_permissions', css_class='unsort'), Fieldset(_('Important dates'), 'last_login', 'date_joined', css_class='unsort'), ), Side(Fieldset( _('Status'), 'is_active', 'is_staff', 'is_pwd_login', 'is_superuser', ), css_class='unsort')) return super(UserAdmin, self).get_form_layout()
class UserProfileAdmin(object): list_display = ('username', 'email', 'is_staff', 'mobile', 'number', 'gender', 'birthday') search_fields = ('number', 'email', 'username', 'mobile') list_filter = ('is_staff', ) model_icon = 'fa fa-user-o' readonly_fields = ('follow_nums', 'fan_nums', 'upload_nums', 'like_nums', 'collection_nums', 'download_nums', 'add_time', 'password') relfield_style = 'fk-ajax' form_layout = (Main( Fieldset('', 'username', 'password', css_class='unsort no_title'), Fieldset( '关键信息', Row('real_name', 'p_class'), Row('email', 'mobile'), Row('qq', 'id_card'), ), Fieldset('权限', 'groups', 'user_permissions'), Fieldset('日期', 'last_login', 'date_joined'), ), Side( Fieldset('状态', 'is_active', 'is_staff', 'is_superuser', 'if_sign'), )) def get_readonly_fields(self): if self.user.is_superuser: self.readonly_fields = [] return self.readonly_fields
class WrokOrdersAdmin(object): list_display = ['org_user', 'pro_type','pro_date','is_finish'] search_fields = [] readonly_fields = ['creator'] list_filter = ['creator','is_finish','is_key_work','create_time','modified_time'] exclude = ['org_dept'] reversion_enable = True form_layout = ( Main( Fieldset('', Row('creator','org_user'), Row('pro_type', 'pro_date'), Row('pro_desc'), Row('solver', 'solve_len_time'), Row('solve_desc'), ), ), Side( Fieldset(('Status'), 'is_finish','is_key_work', ), ) ) def save_models(self): obj = self.new_obj request = self.request obj.creator = str(request.user.username) obj.save()
def get_form_layout(self): self.form_layout = (Main( Fieldset('讲师信息', 'teacher', 'course_org', css_class='unsort no_title'), Fieldset( '基本信息', 'name', 'desc', Row('degree', 'learn_times'), Row('category', 'tags'), 'notice', 'teacher_tell', 'detail', ), ), Side( Fieldset( '访问信息', 'fav_nums', 'click_nums', 'students', 'add_time', ), ), Side( Fieldset( '选择信息', 'is_banner', 'is_classics', ), )) return super(CoursesAdmin, self).get_form_layout()
class NoticeAdmin(CommonSetting): list_display = ('title', 'is_active', 'add', 'url') search_fields = ('title', ) list_filter = ('add', 'mod', 'is_active') readonly_fields = ('add', 'mod') form_layout = (Main( Fieldset(_('公告信息'), Row('title'), Row('add', 'mod'), Row('content')), ), Side(Fieldset(_('状态'), 'is_active')))
class LinkAdmin(CommonSetting): list_display = ('link_name', 'is_active', 'cat', 'url') search_fields = ('link_name', 'email', 'link') list_filter = ('cat', 'is_active') readonly_fields = ('add', 'mod') form_layout = (Main( Fieldset(_('链接信息'), Row('link_name', 'cat'), Row('link', 'email'), Row('add', 'mod')), ), Side(Fieldset(_('状态'), 'is_active'), ))
class AdvertisementAdmin(CommonSetting): list_display = ('ad_name', 'adtype', 'url', 'end') search_fields = ('ad_name', 'remark') list_filter = ('add', 'mod', 'end', "adtype") readonly_fields = ('add', 'mod') form_layout = (Main( Fieldset(_('广告信息'), Row('ad_name', 'add', 'end'), Row('link', 'mod'), Row('image', 'adtype')), ), Side(Fieldset(_('备注'), 'remark')))
class ProfileInline(object): model = UserProfile form_layout = ( Row('department', 'name'), Row('tel', 'email'), Row('status', 'entry_date'), ) max_num = 1 can_delete = False
class CategoryAdmin(CommonSetting): list_display = ('pre_cat', 'cat', 'is_active', 'art_nums', 'add', 'mod') search_fields = ('cat', 'pre_cat') list_filter = ('add', 'mod', 'is_active') readonly_fields = ('add', 'mod') form_layout = ( Main(Fieldset(_('类别信息'), Row('pre_cat', 'cat'), Row('add', 'mod')), ), Side(Fieldset(_('状态'), 'is_active'), ), )
class ExpandAdmin(CommonSetting): list_display = ('key', 'value', "mod") search_fields = ('remark', 'key') list_filter = ('mod', ) ordering = ('-mod', ) readonly_fields = ('mod', ) form_layout = (Main( Fieldset(_('数据记录'), Row('key'), Row('value'), Row('mod'))), Side(Fieldset(_('备注'), 'remark')))
class HostAdmin(object): def open_web(self, instance): return "<a href='http://%s' target='_blank'>Open</a>" % instance.ip open_web.short_description = "Acts" open_web.allow_tags = True open_web.is_column = True list_display = ('name', 'idc', 'guarantee_date', 'service_type', 'status', 'open_web', 'description') list_display_links = ('name',) raw_id_fields = ('idc',) style_fields = {'system': "radio-inline"} search_fields = ['name', 'ip', 'description'] list_filter = ['idc', 'guarantee_date', 'status', 'brand', 'model', 'cpu', 'core_num', 'hard_disk', 'memory', 'service_type'] list_bookmarks = [{'title': "Need Guarantee", 'query': {'status__exact': 2}, 'order': ('-guarantee_date',), 'cols': ('brand', 'guarantee_date', 'service_type')}] show_detail_fields = ('idc',) list_editable = ( 'name', 'idc', 'guarantee_date', 'service_type', 'description') save_as = True aggregate_fields = {"guarantee_date": "min"} form_layout = ( Main( TabHolder( Tab('Comm Fiels', Fieldset('Company data', 'name', 'idc', description="some comm fields, required" ), Inline(MaintainLog), ), Tab('Extend Fiedls', Fieldset('Contact details', 'service_type', Row('brand', 'model'), Row('cpu', 'core_num'), Row(AppendedText( 'hard_disk', 'G'), AppendedText('memory', "G")), 'guarantee_date' ), ), ), ), Side( Fieldset('Status data', 'status', 'ssh_port', 'ip' ), ) ) inlines = [MaintainInline] reversion_enable = True
class ScanTaskAdmin(object): def queryset(self): qs = super(ScanTaskAdmin, self).queryset() if self.request.user.username in PREVILEGED_USER_SETS: return qs else: return qs.filter(workspace__user=self.request.user) list_display = ( 'targets', "ports", "imports_active", "scan_scheme", "date_created", ) # list_display = ('targets', "ports", "scan_scheme", "date_created", schedule) list_editable = ['imports_active', 'workspace'] fieldsets = [ # ("基本描述", {'fields': ['type', "name", "desc"] }), ('工作组', { 'fields': ['workspace'] }), ('文件导入', { 'fields': ['imports_active', 'imports'] }), ('自定义目标', { 'fields': ['targets', "ports", "udp", "domains"] }), ('选定扫描方案', { 'fields': ['scan_scheme'] }), ('执行类型', { 'fields': ['atnow', "regular", "interval", "crontab"] }), ] # wizard_form_list = fieldsets # inlines = [WorkspaceInline, ] form_layout = (Main( TabHolder( Tab( "文件添加扫描", Fieldset( "基础扫描设置", "workspace", "scan_scheme", Row("imports_active", "imports"), Row("atnow", "regular"), ), ), ), ), Side( Fieldset("自定义目标", 'targets', "ports", "udp", "domains"), ))
class NodeBranchInline(object): model = NodeBranch form_layout = ( Row('name', 'handler_type'), Row('handler_user', 'handler_role'), Row('handler_department', 'handler_position'), Row('branch_condition', 'branch_field'), ) extra = 1 style = 'accordion'
class ModalAdmin(object): inlines = [NodeInline] list_display = ['name', 'app_name', 'model_name'] readonly_fields = ['app_name', 'model_name'] raw_id_fields = ['content_type'] form_layout = ( Row('name', 'content_type'), Row('app_name', 'model_name'), Row('description'), )
class CprkXadmin(object): list_display = ['cpph', 'cpid', 'cpmc', 'bz', 'rkczy'] search_fields = ['cpph', 'cpid'] form_layout = (Fieldset( '', Row('cpph', 'cpid'), Row('cpmc', 'rkdate'), Row('rksl', 'bz'), Row('rkczy', 'rklxid'), ), )
class YlinfoXadmin(object): # 设置要显示在列表中的字段 list_display = [ 'ylid', 'ylname', 'minsl', 'maxsl', 'zf', 'stockid', 'bz', 'ylzt' ] # 列表页搜索框可用于模糊匹配的字段 search_fields = ['ylid', 'ylname'] # 设置每页显示多少条记录,默认是100条 list_per_page = 10 # 设置表单输入框一行并排几个 form_layout = ( Fieldset( '', Row('ylid', 'ylname'), Row('dw', 'piedw'), Row('zbq', 'goodzbq'), Row('minsl', 'maxsl'), Row('park', 'pieprice'), Row('tymc', 'ysbz'), # Row('maxsl', 'zf'), Row('stockid', 'zf'), Row('barcode', 'bz'), Row('ylzt'), css_class='unsort no_title'), ) # 添加页面使用的模板 默认为 xadmin/views/model_form.html add_form_template = 'bc_rmaterial/rmaterial_add.html' # 修改页面使用的模板 默认为 xadmin/views/model_form.html change_form_template = 'bc_rmaterial/rmaterial_update.html'