• python测试开发django(34)--一对一(OneToOneField)关系查询


    前言

    前面一篇在xadmin后台一个页面显示2个关联表(OneToOneField)的字段,使用inlines内联显示。本篇继续学习一对一(OneToOneField)关联的查询。

    上一篇list_display只显示了当前表的字段信息,如果想显示关联表的字段,需要关联查询。

    一对一(OneToOneField)关系

    models.py内容,参考https://www.cnblogs.com/canglongdao/p/14121042.html

    shell模式新增数据

    为了调试方便,可以使用django的shell模式,对表的数据增删改查操作,打开cmd,cd到manage.py目录

    python manage.py shell  

    现在cardds表新增一条记录:card_id='03',card_user='xiaoxiao'

     

    接着在carddetaills表新增一条关联的信息

     正向查询

    接着上面的操作,查询Cardds表的card_id和card_user字段值

     通过Cardds表对象a查询关联的CardDetaills表里面的字段值

     反向查询

    如果是以CardDetaills表为操作对象,可以直接查询CardDetaills表里面的字段值

    也可以通过CardDetaills表为对象,查询关联的Cardds表的值

     list_display显示关联表字段

    在上一篇,通过内联(inlines)可以在详情页面显示关联的表信息

     如果我们想让关联表的字段显示在list_display列表界面,这里就需要自己定义函数,通过表的关联去查询了

    # coding:utf-8
    #adminx.py
    import xadmin
    from .models import Studentts,Cardds,CardDetaills
    class ControlStudent(object):
        # 显示的字段
        list_display = ('student_ids', 'names', 'age', 'score')
        # 搜索条件
        search_fields = ('name',)
    
        # 每页显示10条
        list_per_page = 10
    
    
    class MoreInfo(object):
        model = CardDetaills
    
    class ControlCard(object):
        list_display = ["card_id", "card_user","电话","城市", "add_time"]
    
        # 在Card页面显示更多信息CardDetail
        inlines = [MoreInfo]
    
        #查询关联表的tel字段
        def 电话(self,obj):
            return obj.carddetaills.tel
        def 城市(self,obj):
            return obj.carddetaills.city
    
    # 注册Student表
    xadmin.site.register(Studentts, ControlStudent)
    
    # 注册card表,关联CardDetail
    xadmin.site.register(Cardds, ControlCard)
    

     此时页面显示效果如下

  • 相关阅读:
    金蝶用户组权限语句
    金蝶物料更改保质期控制状态
    cisco+pppoe拨号配置教程
    FormFile上传文件代码(修改)
    试用django 和 rgraph 简单记录
    一闪而过的远程桌面
    用 python matplotlib 画图 简单记录
    去除UTL_FILE导致的ORA12012 ORA04068 ORA04063 ORA06508
    python mysqldb模块安装
    canvas绘制圆形
  • 原文地址:https://www.cnblogs.com/canglongdao/p/14165780.html
Copyright © 2020-2023  润新知