使用 admin 管理后台

3 篇文章 0 订阅
2 篇文章 0 订阅
使用 admin 管理后台
    1、基本管理
    2、高级管理
        1、在 admin.py 中创建自定义管理类,以便实现以下高级功能
            1、定义 EntryAdmin 类
                继承自 admin.ModelAdmin
                class EntryAdmin(admin.ModelAdin):
                    ... ...

                admin.site.register(Entry,EntryAdmin)

            2、允许增加的属性
                1、list_display
                    在响应的页面展示哪些字段
                    取值可以是由属性名称所组成的元组
                    ex:
                    list_display=('name','age','price')
                2、list_display_links
                    生成一个到具体页面的超链接,取值必须要出现在 list_display 中,也是一个元组
                    ex:
                    list_display_links=('name','age')
                3、list_editable
                    定义可以直接在外层进行修改的字段们
                    注意:list_editable的值不能出现在list_display_links,取值也是元组
                    ex:
                        list_editable=('price')
                4、search_fields
                    添加允许被搜索的字段,取值是一个元组
                    ex:
                        search_fields=('title','publication_date')
                5、list_filter
                    右边增加一个过滤器
                    取值是由属性名组成的元组
                    ex:
                        list_filter=('title','publication_date')
                6、date_hierarchy
                    顶部增加事件选择器,所以取值必须是DateField 的字符串
                    ex:
                        date_hierarchy='publication_date'
                7、fields
                    指定页面上显示哪些属性,并且按照什么样的顺序显示
                    ex:
                        fields=('name','country')
                8、fieldsets
                    对现有的显示属性进行分组
                    fieldsets=(
                        元组1 - ('分组名称',{'fields':(),'classes':('collapse')})
                        元组2 - ()
                    )

    1、一对一查询(1:1)
        1、什么是一对一
            A表中的一条记录,只能与B表中的一条记录进行匹配
            典型代表:一夫一妻制
            数据库的实现:
                A :有主键
                B :有主键,外加一列,该列的内容为A表的主键值,并且增加唯一约束
        2、语法
            models.OneToOneField(Entry)
        3、查询
            class Wife:
                ... ...
                #在 Wife 中添加了对Author的引用
                author = models.OneToOneField(Author)
            //正向查询 :通过 wife 找 author
            w = Wife.objects.get(id=1)
            a = w.author

            //反向查询 :通过 author 找 wife
            a = Author.objects.get(id=9)
            w = a.wife        
    2、一对多查询 / 多对一查询(1:M)
        1、什么是一对多的查询
            A表中的一条数据可以与B表中的任意多条记录匹配
            一对多在数据库中的体现:
                通过 ForeignKey 外键约束实现一对多效果
                Author 表,作为主表,包含主键
                Book 表,作为子表,包含一个外键,引用在Author的主键
        2、语法
            使用 外键(Foreign Key)
            name = models.ForeignKey(Entry)
        3、查询
            class Book(models.Model):
                ... ...
                author = models.ForeignKey(Author)
            
            正向查询 :
                book = Book.objects.get(id=1)
                author = book.author;
            反向查询
                author = Author.objects.get(id=9)
                books=author.book_set.all()
                book_set : 外键对象_set

    3、多对多查询
        1、什么是多对多
            A表中的一条记录可以与B表中的任意多条记录向匹配,同时 B 表中的每一条记录也可以与A表中的任意多条记录相匹配

            数据库中:通过创建中间表的方式来完成M:N操作

        2、语法
            models.ManyToManyField()
            注意:任何一个实体类中,都可以
        3、查询
            class Author(models.Model):
                ....
                publish=models.ManyToManyField(Publish)
            
            1、正向查询 - 在 Author 中查询 Publish
                author=Author.objects.get(id=9)
                pub_list = author.publish.all()

                通过 关联属性.all()
            2、反向查询 - 在 Publish 中查询 Author
                pub = Publish.objects.get(id=1)
                au_list=pub.author_set.all()


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值