django admin 或xdmin list_display search_fields list_filter 如果显示搜索外键或多对多字段...

本文介绍了一个用户与项目管理系统的模型设计,包括用户信息、项目信息及中心信息等模块,并展示了如何在后台进行管理和搜索操作。

model

class UserProfile(AbstractUser):

    nick_name = models.CharField(max_length=50, verbose_name=u"昵称", default="")
    gender = models.CharField(max_length=6, choices=(("male",u""),("female","")), default="female")
    address = models.CharField(max_length=100, default=u"")
    mobile = models.CharField(max_length=11, null=True, blank=True)
    add_time = models.DateTimeField(auto_now=True)


    class Meta:
        verbose_name = "用户信息"
        verbose_name_plural = verbose_name

 

class Project(models.Model):
    project_name = models.CharField(max_length=200, verbose_name="项目名称", default="")
    project_number = models.CharField(max_length=200,verbose_name="项目编号", default="")
    project_user = models.ForeignKey(UserProfile,verbose_name='项目负责人')
    add_time = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = "项目信息"
        verbose_name_plural = verbose_name


class Center(models.Model):
    center_name = models.CharField(max_length=200, verbose_name="中心名称", default="")
    center_number = models.CharField(max_length=200,verbose_name="中心编号", default="")
    center_user = models.ManyToManyField(UserProfile, verbose_name='中心负责人')
    add_time = models.DateTimeField(auto_now=True)

    class Meta:
        verbose_name = "中心信息"
        verbose_name_plural = verbose_name

 

admin或xadmin的展示

class CenterAdmin(object):
    """
    中心列表
    """

    list_display = ['id','center_name','center_number','center_user']  #后台自定义显示列

    search_fields = ['id','center_name','center_number','center_user__username'] #定义后台搜索 外键或多对多加__双下划线对应的字段名

    list_filter = ['id','center_name','center_number','center_user__username'] #通过时间搜索外键或多对多加__双下划线对应的字段名


class PatientAdmin(object):
    """
    患者列表
    """

    list_display = ['id','patient_number','patient_user']  #后台自定义显示列

    search_fields = ['id','patient_number','patient_user__username'] #定义后台搜索 外键或多对多加__双下划线对应的字段名索

    list_filter = ['id','patient_number','patient_user__username'] #通过时间搜索外键或多对多加__双下划线对应的字段名

 

import datetime from django.contrib import admin from django.contrib.auth.admin import UserAdmin from .models import * admin.site.site_header = '北亚能力训练系统' admin.site.index_title = '能力训练系统管理' @admin.register(UserProfile) class UserProfileModelAdmin(UserAdmin): list_filter = ('groups',) list_display = ("id", "username", "nick_name", "email", "user_code", "sn", "is_active", "id_card", "exam_type", "last_login") list_display_links = ('username',) fieldsets = ( (None, {'fields': ('username', 'nick_name', 'user_code', 'password', 'email', 'sn', "id_card")}), ('Permissions', {'fields': ('is_active', 'exam_type', 'is_staff', 'is_superuser', 'groups', 'user_permissions')}), ('Important dates', {'fields': ('last_login', 'date_joined')}), ) def save_model(self, request, obj, form, change): if obj.sn: sn_obj = SerialNumber.objects.filter(serial_number=obj.sn.serial_number).first() if sn_obj: sn_obj.active_time = datetime.datetime.now() sn_obj.save() obj.save() def delete_model(self, request, obj): obj.delete() def delete_queryset(self, request, queryset): for obj in queryset: self.delete_model(request, obj) @admin.register(UserGroup) class UserGroupModelAdmin(admin.ModelAdmin): list_display = ("id", "name") filter_horizontal = ('user', 'case_type') list_display_links = ('name',) @admin.register(SerialNumber) class SerialNumberModelAdmin(admin.ModelAdmin): def username(self): return self.userprofile.username def nickname(self): return self.userprofile.nick_name username.short_description = '用户名' nickname.short_description = '用户昵称' list_display = ("serial_number", username, nickname, "expire_date", "is_valid", "active_time", "create_time") fieldsets = ( (None, {'fields': ('serial_number', 'expire_date', 'is_valid', 'active_time')}), ) @admin.register(ExamRecord) class ExamRecordModelAdmin(admin.ModelAdmin): search_fields = ('user',) def nickname(self): return self.user.nick_name list_filter = ('exam_type', 'status', 'user', "case_type", "case_number") list_display = ( "user", nickname, "case_name", "case_type", "case_number", "exam_type", "status", "update_time", "create_time") fieldsets = ( (None, {'fields': ('user', 'question_json', 'status', 'answer_json')}), ) @admin.register(ScoreModel) class ScoreModelModelAdmin(admin.ModelAdmin): search_fields = ('user',) list_display = ("user", "stage_id", "question_number", "score", "update_time", "create_time") 逐行解析
最新发布
05-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值