要实现的功能: 继昨天实现拓展User模型使其得到其上级用户,今天要实现某些模型与用户多对多字段过滤功能. 功能描述:以用户指派功能为例,当前用户将文件指派给多个下级,修改前 程序会将所有用户都显示出来,修改后,程序只显示其下级用户: 上代码: #多对多字段过滤 def formfield_for_dbfield(self,db_field,**kwargs): if db_field.name=='assign_units': kwargs["queryset"]=User.obje…
在adminx.py文件对应的的class中添加如下代码: def queryset(self): qs = super(taskAdmin, self).queryset() if self.request.user.is_superuser: # 超级用户可查看所有数据 return qs else: return qs.filter(task_username=self.request.user) # task_username是Task Model的用户字段 super().querys…
Object Relational Mapping (ORM) orm介绍 orm概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术. 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中. ORM在业务逻辑层和数据库层之间充当了桥梁的作用. orm由来 让我们从O/R开始.字母O起源于"对象"(Object),而R则来自于"关系&q…
对于如下的模型: from django.db import models # Create your models here. class Student(models.Model): name = models.CharField(max_length=128) class Course(models.Model): name = models.CharField(max_length=128) students = models.ManyToManyField('Student') 模型C…
版权归作者所有,任何形式转载请联系作者.作者:petanne(来自豆瓣)来源:https://www.douban.com/note/301166150/ 1.多表连接查询:感觉django太NX了.  class A(models.Model):    name = models.CharField(u'名称')  class B(models.Model):    aa = models.ForeignKey(A)B.objects.filter(aa__name__contains='se…
1.多表连接查询:当我知道这点的时候顿时觉得django太NX了.   class A(models.Model):     name = models.CharField(u'名称')   class B(models.Model):     aa = models.ForeignKey(A) B.objects.filter(aa__name__contains='searchtitle') 1.5 我叫它反向查询,后来插入记录1.5,当我知道的时候瞬间就觉得django太太太NX了.  …
1.多表连接查询:当我知道这点的时候顿时觉得django太NX了.  class A(models.Model):    name = models.CharField(u'名称')  class B(models.Model):    aa = models.ForeignKey(A)B.objects.filter(aa__name__contains='searchtitle') 1.5 我叫它反向查询,后来插入记录1.5,当我知道的时候瞬间就觉得django太太太NX了.  class…
Django - Xadmin (四) Filter Filter 功能描述 与 admin 组件中 Filter 功能类似,在展示页面右侧放置一列标签,通过点击这些标签来筛选出该标签相关的数据. 比如, Filter 中有关于出版社分类的标签,点击相关出版社的标签会将关于该出版社的书籍数据列出来. 实现过程实际上就是 a 标签加上后台数据筛选和标签渲染. 后台处理 后台处理主要分为两块, ModelXadmin 类中的处理和 ShowList 类中的处理. ModelXadmin 类 首先,在…
1 ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. DateField 日期字段,日期格式  YYYY-MM-DD,相当于Python中的datetime.date()实例. DateT…
三.xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip文件放到pip目录下,运行下面命令安装: pip install xadmin-django2 是文件README.rst 出现了 Unicode 解码错误,这个文件是没有什么用处的,可以新建一个同名的空白文件替换掉 首先下载zip源码包:github.com/sshwsfc/xadmin 解压后,…
from django.db import models class Publisher(models.Model): name = models.CharField(max_length=30) address = models.CharField(max_length=50) city = models.CharField(max_length=60) state_province = models.CharField(max_length=30) country = models.Char…
Django - Xadmin (三) 分页.搜索和批量操作 分页和 ShowList 类 因为 list_view 视图函数里面代码太多,太乱,所以将其里面的用于处理表头.处理表单数据的关键代码提取出来,作为函数包装到一个类当中,同时,将分页功能代码也封装到该类中. ShowList 类 因为将代码封装成了一个类,最先重要的是初始化,这里的初始化所传参数如下: def __init__(self, config, data_list, request): config: 即每个表对应的配置类…
五.完成注册.找回密码和激活验证码功能 5.1.用户注册 register.html拷贝到templates目录 (1)users/views.py class RegisterView(View): '''用户注册''' def get(self,request): return render(request,'register.html') (2)注册页面的url # MxOnline/urls.py from users.views import RegisterView path('re…
七.授课机构功能 7.1.模板继承 (1)创建母板 把org-list.html拷贝到templates目录下,新建base.html,剪切org-list.html内容到里面 再修改一下静态文件的地址(css.就是.image和media) (2)机构首页路由 from organization.views import OrgView path('org_list/',OrgView.as_view(),name = 'org_list'), (3)机构views class OrgView…
一些说明: 表myapp_person的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时. id字段是自动添加的,如果你想要指定自定义主键,只需在其中一个字段中指定 primary_key=True 即可.如果Django发现你已经明确地设置了Field.primary_key,它将不会添加自动ID列. 本示例中的CREATE TABLE SQL使用PostgreSQL语法进行格式化,但值…
完成授课机构的功能 模板继承 在templates目录下,新建base.html,剪切org-list.html内容到里面 编写org-list.html内容 继承base.html,将里面的面包屑和内容拷贝到org-list.html中 配置路由 # 课程机构首页url path('org_list/', OrgView.as_view(), name="org_list"), 这里需要修改一下models # organization/models.py class CourseO…
第三百九十六节,Django+Xadmin打造上线标准的在线教育平台—其他插件使用说,自定义列表页上传插件 设置后台列表页面字段统计 在当前APP里的adminx.py文件里的数据表管理器里设置 aggregate_fields = {'字段名称':'sum为统计数,min为统计时间'} class CourseAdmin(object): # 自定义数据表管理器类 # 设置xadmin后台显示字段 list_display = ['name', 'desc', 'detail', 'degre…
一.外键使用 在 MySQL 中,如果使用InnoDB引擎,则支持外键约束.(另一种常用的MyIsam引擎不支持外键) 定义外键的语法为fieldname=models.ForeignKey(to_class,on_delete=' ',options),第一个参数表示引用哪个模型,第二个参数表示如果外键引用的模型删除,该字段对应的的值应该怎么处理,第三个语法为其他字段参数. django ORM模型常用的on_delete的值 models.CASCADE:级联删除,即外键对应的那条数据删除了…
ORM字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. IntegerField 一个整数类型,范围在 -2147483648 to 2147483647. CharField 字符类型,必须提供max_length参数, max_length表示字符长度. DateField 日期字段,日期格式  YYYY-MM-DD,相当于Python中的datetime.date()实例. DateTim…
第三百八十五节,Django+Xadmin打造上线标准的在线教育平台—登录功能实现 1,配置登录路由 from django.conf.urls import url, include # 导入django自在的include逻辑 from django.contrib import admin from django.views.generic import TemplateView # 导入django自带的TemplateView逻辑 import xadmin # 导入xadmin fr…
第三百八十四节,Django+Xadmin打造上线标准的在线教育平台—路由映射与静态文件配置以及会员注册 基于类的路由映射 from django.conf.urls import url, include # 导入django自在的include逻辑 from django.contrib import admin from django.views.generic import TemplateView # 导入django自带的TemplateView逻辑 import xadmin #…
第 1 章 课程介绍 1-1 项目演示和课程介绍: 第 2 章 Windows下搭建开发环境 2-1 Pycharm.Navicat和Python解释器的安装: Pycharmhttp://www.jetbrains.com/pycharm/ MacOS 版本的MySQL 8.0.12: Navicat for MySQL 11.1.3: Python 2.7.15: Pycharm Professional 2018.3; http://www.jetbrains.com/pycharm/ 2…
大家好,此教程为在慕学网的实战教程Python升级3.6 强力Django+杀手级Xadmin打造在线教育平台的学习笔记,不对望指正! 使用Django+Xadmin打造在线教育平台(Python2,3共用一份教程,未说明的都是相同操作,不同点我会专门指出.): 课程介绍 第一章:项目介绍和课程介绍 Django是一个Python中Web开发的主流框架,被许多大型公司使用,如Google,豆瓣,YouTube,知乎,instagram:   mark 创业公司喜欢的web框架.严格按照互联网公司…
1表多对多的关系查询 准备工作创建表结构 from django.db import models # Create your models here. class Publisher(models.Model): name = models.CharField(max_length=32, verbose_name="名称") def __str__(self): return self.name class Book(models.Model): title = models.Ch…
12.324 Django ORM常用字段 .id = models.AutoField(primary_key=True):int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. .IntegerField:一个整数类型,范围在 .name ):varchar字符类型,必须提供max_length参数, max_length表示字符长度 .title = models.DateField(null=True):日期字段,日期…
作者的管理 1.设计表结构 出版社 书籍 作者 一个出版社出版多个书籍  1对多 书籍和作者的关系:一个作者写多本书,一本书可以是多个作者写.多对多 1)创建一张表,表中多对多的数据关系.使用 多对多字段的方法 2)创建的这个类,会创建两个表,app_加类名(开头变小写),app_这个类名_另一张表类名 3)这个类创建的表中没有多对多的字段,多对多的关系是以这张表表名加_id和另一张表表名加_id两个字段合成的新的表,id主键自动生成 4)一般多对多字段关联的是有外键的那张表.   2.展示含有…
Django - Xadmin (五) POP 功能及逻辑描述 pop 功能:在添加数据时,对于需要选择的多对多字段,在其 input 框边加上一个按钮,点击该按钮可以实现跳转到添加该字段数据的页面:添加该字段数据后,添加字段数据页面消失,返回到原来添加页面:此时新添加的内容已经出现在选项中并默认选中. 页面跳转与消失的逻辑 跳转逻辑: window.open(url, "", "width:400,height=200,top=100,left=100") win…
使用django+x-admin管理后台模板搭建管理后台 一.环境需求 1.django:3.1 2.python:3.7 3.x-admin:2.2 4.pycharm:2020.3.2 5.ubuntu:20.0.4 6.mysql:8.0 二.功能需求 1.要使用django提供的auth类完成自定义user用户.group组.permission权限,进行用户管理. 2.要使用django提供的login和logout类完成登录与登出验证. 3.要配置路由和相关类完成django自定义管…
在项目常常要和数据表格打交道. 现在BS的通常做法都是前端用一个js的Grid控件, 然后通过ajax的方式从后台加载数据, 然后将数据和Grid绑定. 数据往往不是一页可以显示完的, 所以要加分页:然后就是根据关键字段做排序, 做筛选过滤. 作为后端人员, 要考虑的是如何优雅的实现分页.排序.筛选的功能. 本文先谈谈筛选. 因为分页.排序.筛选这3个动作, 一定是先处理筛选的——筛选后的结果再去排序, 然后再做分页 , 才有意义. 筛选首先要考虑如下两个问题: 1) 字段类型 2) 比较方式…
上一篇<使用Expression实现数据的任意字段过滤(1)>, 我们实现了通过CriteriaCollectionHandler对象来处理集合数据过滤.通过适当的扩展, 应该可以满足一般的筛选条件应用了.但是在我经历的项目中, 突然有个情况让我措手不及.下面和大家分享下. 这个项目叫WebAD,顾名思义, 就是将AD的管理界面使用Web来实现. 无可避免的要查询AD里面的对象,比如UserPrinciple,即查找某一OU节点下的所有用户. 先感受下UserPrinciple的属性 再感受下…