xadmin显示及重写xadmin

xadmin显示

如果想把这些都显示为中文,需要在settings中配置

xadmin显示及重写xadmin_第1张图片

xadmin显示及重写xadmin_第2张图片

然后在apps.py加上 verbose_name就可以。

xadmin显示及重写xadmin_第3张图片

 

Course类

class Course(models.Model):
    name = models.CharField(max_length=100,verbose_name=u"课程名")   # verbose_name是显示在右侧大框中,比如过滤器中的名字
    image = models.ImageField(upload_to="courses/%Y/%m",max_length=100,verbose_name=u"封面图片")
    desc = models.CharField(max_length=100,verbose_name=u"课程描述")
    degree = models.CharField(choices=(("gj",u"高级"),("zj",u"中级"),("cj",u"低级")),max_length=2,verbose_name=u"难度")
    learn_time = models.IntegerField(verbose_name=u"学习时长(分钟数)",default=0)
    students = models.IntegerField(verbose_name=u"学习人数",default=0)
    fav_nums = models.IntegerField(verbose_name=u"收藏人数",default=0)
    click_nums = models.IntegerField(verbose_name=u"点击人数",default=0)
    detail = models.TextField(verbose_name=u"课程详情")
    add_time = models.DateTimeField(verbose_name=u"添加时间",default=datetime.now)

    class Meta:
        verbose_name = u"课程"    # 这个名字是显示在xadmin后台左侧栏中
        verbose_name_plural = verbose_name

Lesson类中的course作为Course的外键

class Lesson(models.Model):
    course = models.ForeignKey(Course,verbose_name=u"课程")
    name = models.CharField(max_length=100,verbose_name=u"章节名")
    add_time = models.DateTimeField(verbose_name=u"添加时间",default=datetime.now)

    class Meta:
        verbose_name = u"章节"
        verbose_name_plural = verbose_name

在adminx.py中注册

class LessonAdmin(object):
    list_display = ['course', 'name','add_time']  # 打开xadmin后显示的字段。不是添加对象(比如添加课程显示的字段,添加课程显示的字段是这个表的所有字段)
    search_fields = ['course', 'name']
    list_filter = ['course', 'name','add_time']

然后,在xadmin管理页面先添加2个Course对象

xadmin显示及重写xadmin_第4张图片

此时,查看章节页面的 过滤器是2个course对象

xadmin显示及重写xadmin_第5张图片

点击添加章节,课程也是2个course对象

xadmin显示及重写xadmin_第6张图片

这是因为Course类没有定义__str__方法

    def __str__(self):
        return self.name

此时,就是这样了

xadmin显示及重写xadmin_第7张图片

使用外键

想用外键添加Course的别的字段,可以在list_filter中设置 course__degree ,是双下划线

list_filter = ['course','course__degree', 'name','add_time']

这样的话就变成这样了

xadmin显示及重写xadmin_第8张图片

按字段排序,设置字段为只读,及隐藏字段

    ordering = ['-click_nums']  # 进入xadmin页面将某个字段倒序排列
    readonly_fields = ['click_nums']  # 将某个字段以只读形式
    exclude = ['fav_nums']    # 不显示某个字段

将外键设置成搜索形式

添加下面字段使带有外键的字段变成搜索格式。我没试成功

relfield_style = 'fk_ajax'

xadmin显示及重写xadmin_第9张图片

同一个model注册多个管理器

Model:Course作为Lesson和CourseResource的主键,如果想在Course中将这2个外键都显示,那么如下操作。注意如果Lesson(章节)model被Video(每课视频)作为主键关联,是不能这样写进去的。只能关联一层关系,不能多层关系

class LessonInline(object):
    model = Lesson
    extra = 0

class CourseResourceInline(object):
    model = CourseResource
    extra = 0
	
class CourseAdmin(object):
。。。
inlines = [LessonInline,CourseResourceInline]

那么这样在课程的xadmin页面就显示如下

xadmin显示及重写xadmin_第10张图片

按degree=cj字段 将Course分离成2个model

在model.py添加

class LowLevelCourse(Course):
    class Meta:
        verbose_name = u"低级课程"
        verbose_name_plural = verbose_name
        proxy = True   # 设置True只在xadmin中生存2个model管理,不生产数据表

在adminx.py添加

class CourseAdmin(object):
    list_display = ['name','image','desc','degree','learn_time','students','fav_nums','click_nums','detail','add_time']
    search_fields = ['name','image','desc','degree','learn_time','students','fav_nums','click_nums','detail']
    list_filter = ['name','image','desc','degree','learn_time','students','fav_nums','click_nums','detail','add_time']

    def queryset(self):
        qs = super(CourseAdmin,self).queryset()
        qs = qs.exclude(degree="cj")
        return qs

class LowLevelCourseAdmin(object):
    list_display = ['name','image','desc','degree','learn_time','students','fav_nums','click_nums','detail','add_time']
    search_fields = ['name','image','desc','degree','learn_time','students','fav_nums','click_nums','detail']
    list_filter = ['name','image','desc','degree','learn_time','students','fav_nums','click_nums','detail','add_time']

    def queryset(self):
        qs = super(LowLevelCourseAdmin,self).queryset()
        qs = qs.filter(degree="cj")
        return qs

xadmin.site.register(LowLevelCourse,LowLevelCourseAdmin)
xadmin.site.register(Course,CourseAdmin)

效果如下

xadmin显示及重写xadmin_第11张图片

 

前后端分离看到的一些功能。

添加商品时,如何添加编辑器

xadmin显示及重写xadmin_第12张图片

然后再后台就可以看到。里面的ueditor已经开发好了,直接用即可,从这个git中复制相关的ueditor

xadmin显示及重写xadmin_第13张图片

 

 

重写xadmin

重写xadmin,需要把xadmin的源码放在extra_app中,如何放,查看

https://blog.csdn.net/qq_34964399/article/details/80369321

1. 如何修改用户信息表的css布局,默认的布局如下,

xadmin显示及重写xadmin_第14张图片

他的布局是按照 \extra_app\xadmin\plugins\auth.py  里的UserAmin类中的get_form_layout方法实现的,fieldset就跟上图的布局对应

xadmin显示及重写xadmin_第15张图片

 

2 给xadmin添加添加小头像

xadmin显示及重写xadmin_第16张图片

只要添加model_icon , 就会生成小头像

xadmin显示及重写xadmin_第17张图片

xadmin中的icon的css样式路径xadmin/static/xadmin/vendor/font-awesome 。从http://www.fontawesome.com.cn/

下载最新的样式,将解压后的xadmin显示及重写xadmin_第18张图片css/fonts文件夹覆盖到xadmin中就是最新的。然后去在官网的icon图标库,选择相应的样式即可,填写到model_icon中即可

 

 

 

你可能感兴趣的:(django做教育平台)