xadmin显示及重写xadmin

xadmin显示

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

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

 

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对象

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

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

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

    def __str__(self):
        return self.name

此时,就是这样了

使用外键

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

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

这样的话就变成这样了

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

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

将外键设置成搜索形式

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

relfield_style = 'fk_ajax'

同一个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页面就显示如下

按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)

效果如下

 

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

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

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

 

 

重写xadmin

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

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

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

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

 

2 给xadmin添加添加小头像

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

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

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

 

 

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值