提交根评论
显示根评论
--- render显示
--- ajax显示 提交子评论 显示子评论
---- render显示
---- Ajax显示(扩展) 评论树 博客:富文本编辑器
beautfulSoup模块 ret=Book.objects.all().exist() # sql; limit if ret:
print("OK") Book.objects.all().distinct() # XXXX
select distinct(age) from Book
Book.objects.all().values("title").distinct()
sql:

  单表处理:
Book id title price publish email addr
python 苹果出版社 @qq.com 北京
go 橘子出版社 @qq.com 南京
java 橘子出版社 @qq.com 南京
linux 橘子出版社 @qq.com 南京 ###################一对多######################多表: Book id title price publish_id
python
go
java
linux Publish id name email addr
苹果出版社 @qq.com 北京
橘子出版社 @qq.com 南京 结论: 一旦确定表关系是一对多,那么关联字段建在多的表中 book: Foreignkey publish_id refference Publish(id) #######################多对多################################# Book id title price publish_id
python
go
java
linux Author id name age
alex
liwen Author_Book id author_id book_id 结论;一旦是多对多的关系:需要建立第三张关系表 #######################一对一################################# Author id name age
alex
liwen AuthorDetail id tel gf author_id(unique)
钢蛋
铁锤 SELECT
"app01_book"."title" FROM "app01_publish"
LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id")
WHERE "app01_publish"."name" = 苹果出版社 SELECT
"app01_book"."title" FROM "app01_book" INNER JOIN
"app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid")
WHERE "app01_publish"."name" = 苹果出版社 SELECT "app01_book"."title", "app01_publish"."name"
FROM "app01_book" INNER JOIN
"app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id")
INNER JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorDetail_id" = "app01_authordetail"."nid")
INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_authordetail"."telephone" LIKE % ESCAPE '\'
sql:

  单表处理:
Book id title price publish email addr
python 苹果出版社 @qq.com 北京
go 橘子出版社 @qq.com 南京
java 橘子出版社 @qq.com 南京
linux 橘子出版社 @qq.com 南京 ###################一对多######################多表: Book id title price publish_id
python
go
java
linux Publish id name email addr
苹果出版社 @qq.com 北京
橘子出版社 @qq.com 南京 结论: 一旦确定表关系是一对多,那么关联字段建在多的表中 book: Foreignkey publish_id refference Publish(id) #######################多对多################################# Book id title price publish_id
python
go
java
linux 聚合与分组 # 统计不止一个作者的图书名称: select book.title,Count(author.name) as c from book inner join book-authors on ...
inner join author on ... group by book.id having c> admin配置参数 后台数据库管理页面 admin model: 对每一个app下的model设计出增伤改查4个url 查看book:
http://127.0.0.1:8000/admin/app01/book/
添加book:
http://127.0.0.1:8000/admin/app01/book/add/
编辑book:
http://127.0.0.1:8000/admin/app01/book/1/change/
删除book:
http://127.0.0.1:8000/admin/app01/book/1/delete/ 注册:
from django.contrib import admin # Register your models here. from .models import * from django.utils.safestring import mark_safe class BookConfig(admin.ModelAdmin): def deletes(self):
return mark_safe("<a href=''>删除</a>") list_display = ["title","price","publishDate",'publish',deletes]
list_display_links = ["price"]
list_filter=["price","title","authors","publish"]
list_editable=["title",] search_fields=["title","price"] def patch_init(self,request,queryset): queryset.update(price=) patch_init.short_description = "批量初始化" actions = [patch_init,] change_list_template="list.html"
fields = ('title',) admin.site.register(Book,BookConfig) admin.site.register(Publish)
admin.site.register(Author)
admin.site.register(AuthorDetail) Admin的实现流程:
启动:
import admin
def autodiscover():
autodiscover_modules('admin', register_to=site) 执行每一个app下的admin.py文件
注册 单例模式 设计URL Xadmin组件 ModelForm组件 CRM Xadmin组件
权限
crm '''
select Max(book.price) as max_price from author inner join book_authors on ...
inner join join book on ... group by author.name ''' Author id name age
alex
liwen Author_Book id author_id book_id 结论;一旦是多对多的关系:需要建立第三张关系表 #######################一对一################################# Author id name age
alex
liwen AuthorDetail id tel gf author_id(unique)
钢蛋
铁锤 SELECT
"app01_book"."title" FROM "app01_publish"
LEFT OUTER JOIN "app01_book" ON ("app01_publish"."nid" = "app01_book"."publish_id")
WHERE "app01_publish"."name" = 苹果出版社 SELECT
"app01_book"."title" FROM "app01_book" INNER JOIN
"app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid")
WHERE "app01_publish"."name" = 苹果出版社 SELECT "app01_book"."title", "app01_publish"."name"
FROM "app01_book" INNER JOIN
"app01_book_authors" ON ("app01_book"."nid" = "app01_book_authors"."book_id")
INNER JOIN "app01_author" ON ("app01_book_authors"."author_id" = "app01_author"."nid") INNER JOIN "app01_authordetail" ON ("app01_author"."authorDetail_id" = "app01_authordetail"."nid")
INNER JOIN "app01_publish" ON ("app01_book"."publish_id" = "app01_publish"."nid") WHERE "app01_authordetail"."telephone" LIKE % ESCAPE '\'
 ORM分组查询

     admin 参数配置

     admin流程
() 启动
autodiscover_modules('admin', register_to=site) () 注册
单例模式
admin.site=AdminSite(): 单例对象 class AdminSite(object):
def __init__(self, name='admin'):
self._registry = {} def register(self, model, admin_class=None, **options):
if not admin_class:
admin_class = ModelAdmin self._registry[model] = admin_class(model, self) # {Book:ModelAdmin(Book)} admin.site.register(Book) # admin.site._registry={Book:ModelAdmin(Book)}
admin.site.register(Publish) # admin.site._registry={Book:ModelAdmin(Book),Publish:ModelAdmin(Publish)} class Authoconfig(admin.ModelAdmin):
pass admin.site.register(Author,Authoconfig) # admin.site._registry={Book:ModelAdmin(Book),Publish:ModelAdmin(Publish),Author:Authoconfig(Author)} () 设计URL 为每一个app下的model设计增删改查4个url,以book为例:
127.0.:/admin/app01/book/
127.0.:/admin/app01/book/add
127.0.:/admin/app01/book//change/
127.0.:/admin/app01/book//delete/ url.py:
[
url(r'^index/', index), # index(reqeust)
] {
<class 'django.contrib.auth.models.Group'>: <django.contrib.auth.admin.GroupAdmin object at 0x000000000B5CA5F8>, <class 'django.contrib.auth.models.User'>: <django.contrib.auth.admin.UserAdmin object at 0x000000000B5F9080>,
<class 'app01.models.Book'>: <app01.admin.BookConfig object at 0x000000000B601D68> } {
<class 'django.contrib.auth.models.Group'>: <django.contrib.auth.admin.GroupAdmin object at 0x000000000B5CA5F8>,
<class 'django.contrib.auth.models.User'>: <django.contrib.auth.admin.UserAdmin object at 0x000000000B5F9080>, <class 'app01.models.Book'>: <app01.admin.BookConfig object at 0x000000000B601D68>,
<class 'app01.models.Publish'>: <django.contrib.admin.options.ModelAdmin object at 0x000000000B601D30>,
<class 'app01.models.Author'>: <django.contrib.admin.options.ModelAdmin object at 0x000000000B601DD8>,
<class 'app01.models.AuthorDetail'>: <django.contrib.admin.options.ModelAdmin object at 0x000000000B601E10>
} HTTP: 什么是url:
协议://IP:8000/路径?a=1&b=2 http://127.0.0.1:8000/index/car/3?a=1 url("^yuan/",([
url(r'^test01/', ([
url(r'^test04/', test04),
url(r'^test05/', test05),
],None,None)), url(r'^test02/', test02),
url(r'^test03/', test03),
],None,None)) 需求:
为每一个app下的model设计增删改查4个url 127.0.:/Xadmin/app01/book/
127.0.:/Xadmin/app01/book/add
127.0.:/Xadmin/app01/book//change/
127.0.:/Xadmin/app01/book//delete/
原生form

forms组件

    ChoiceField(Field)

    ModelChoiceField(ChoiceField)

    ModelMultipleChoiceField(ModelChoiceField)

     针对form表单设计form组件

modelform

     class Book(models.Model):

        title=models.CharField(max_length=)
price=models.DecimalField(max_digits=,decimal_places=) # 999999.99
date=models.DateField()
publish=models.ForeignKey("Publish")
authors=models.ManyToManyField("Author") class BookForm(forms.Form):
title = forms.CharField(max_length=,label="书籍名称")
price = forms.DecimalField(max_digits=, decimal_places=,label="价格") # 999999.99
date = forms.DateField(label="日期",
widget=widgets.TextInput(attrs={"type":"date"})
) #gender=forms.ChoiceField(choices=((,"男"),(,"女"),(,"其他")))
#publish=forms.ChoiceField(choices=Publish.objects.all().values_list("pk","title"))
publish=forms.ModelChoiceField(queryset=Publish.objects.all())
authors=forms.ModelMultipleChoiceField(queryset=Author.objects.all())

admin 的流程 Xadmin的更多相关文章

  1. 实现django admin后台到xadmin后台的转变

    虽然不做前端,还是喜欢好看的东西~.~ 之前同事估计也是功能实现没空管这个后台,前段时间闲的,稍微改了下外貌,前后对比下: Python3.5+Django1.9.7+Xadmin0.6.1 步骤如下 ...

  2. Django admin组件源码流程

    admin 组件 Django 自带的用户后台组件 用于用户便携的操作 admin 组件核心 启动 注册 设计url 启动核心代码 每个app 通过 apps.py 扫描 admin.py 文件 并执 ...

  3. Django Xadmin - 重构django admin

    一.Django admin的执行流程 https://www.cnblogs.com/weihengblog/p/9122509.html 我的博客,介绍了django admin执行流程 二.Xa ...

  4. Django admin源码剖析

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  5. py3.6 + xadmin的自学网站搭建

    xadmin安装 由于安装时需要依赖包并且暂时不支持py3等原因,直接pip install的方法很容易就狗带了. 说一下我在网上找到的安装方式,在GitHub上有这个项目的开源代码,并且还有很多个版 ...

  6. Django+xadmin打造在线教育平台(二)

    三.xadmin后台管理 3.1.xadmin的安装 django2.0的安装(源码安装方式): https://github.com/sshwsfc/xadmin/tree/django2 把zip ...

  7. 【django之admin,单例模式】

    一.admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTAL ...

  8. Django之admin的使用和源码剖析

    admin组件使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.你可以在项目的 settings.py 中的 INSTALLE ...

  9. Django 之 admin管理工具

    -------------------------------------------------------------------------妄尝恶果,苦果自来. admin组件使用 Django ...

随机推荐

  1. [CI]CodeIgniter视图 & 模型 & 控制器

    ---------------------------------------------------------------------------------------------------- ...

  2. JAVAWEB 一一 Hibernate(框架)

    实体类关联数据库字段,操作实体类,HQL语句对数据结构CRUD) 引入jar包 配置文件 hibernate.cfg.xml User.hbm.xml <?xml version="1 ...

  3. C# 读取ini文件,读不出来原因

    先赋上相关读取ini文件代码 public class INIHelper { public string inipath; [DllImport("kernel32")] pri ...

  4. 吴裕雄 oracle 函数、触发器和包编程

  5. Ubuntu下好的PDF阅读器介绍

    我们经常要学习,看论文,如果有好的PDF阅读器,可以做笔记,对以后查看和记忆是有帮助的 这里推荐用:okular 这里是基本操作哦 1: 安装 sudo apt-get install okular ...

  6. hdu2669-Romantic-(扩展欧几里得定理)

    Romantic Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Su ...

  7. linux下arm汇编注释符

    注意使用 @ 符 # 是整行注释符 @ 是行内注释符 以为 @ 是行内注释符,害我调试了半天.

  8. vl_sift函数用法

    I = vl_impattern('roofs1') ; image(I) ; %vl_sift函数的输入是一个单精度的灰度图像,灰度值区间归一化到[, ]. %因此图像 I 需要通过下面的函数转成相 ...

  9. yyyy-MM-dd 转换为年月日

      yyyy-MM-dd 转换为年月日   先用parse转成date型,再用format转成string. Date date = new SimpleDateFormat("yyyy-M ...

  10. 修复回写PR时到料日期重复扣减检验周期的问题:

    问题描述: 修复回写PR时到料日期重复扣减检验周期的问题:系统回写的外购半成品PR交货日期未按采购周期回写,从8-10日开始均于10天交期回写,例以下9-5日今天回写的PR,采购周期12天,结果回写到 ...