Django中如何使用ORM进行内连接,外连接

2020-04-07 08:29发布

1条回答
ThreeDay
2楼 · 2021-01-19 11:38

正向查找:ForeignKey在 UserInfo表中,如果从UserInfo表开始向其他的表进行查询,这个就是正向操作,反之如果从UserType表去查询其他的表这个就是反向操作。

  • 一对多:models.ForeignKey(其他表)

  • 多对多:models.ManyToManyField(其他表)

  • 一对一:models.OneToOneField(其他表)

正向连表操作总结:

所谓正、反向连表操作的认定无非是Foreign_Key字段在哪张表决定的,

Foreign_Key字段在哪张表就可以哪张表使用Foreign_Key字段连表,反之没有Foreign_Key字段就使用与其关联的 小写表名;

1对多:对象.外键.关联表字段,values(外键字段__关联表字段)

多对多:外键字段.all()

反向连表操作总结:

 通过value、value_list、fifter 方式反向跨表:小写表名__关联表字段

通过对象的形式反向跨表:小写表面_set().all()

 

    data: JSON.stringify({
                "table": "Functions",
                "action": "select_hosts",
                "db_type": data_type
            }),

 

复制代码

# 添加权限时 select标签 联动 选择数据permit_option_dict = {    "DB_info": {"actions": {        "select_db_type": {"args": ['select_db_type'], "filter": ["database_type"],                           "values": ['id', 'host', 'port', 'instance_nikename']},        "unique_alias": {"args": ['database_type', "unique_alias"],                         "filter": ["database_type", "instance_nikename__icontains"],                         "values": ['id', 'host', 'port', 'instance_nikename']},
    }},    "Functions": {"actions": {        "select_hosts": {"args": ["db_type"], "filter": ["sql_type"], "values": ['id', 'sql']},        "uniquefunction": {"args": ['select_db_type', "uniquefunction"], "filter": ["sql_type", "sql__icontains"],                           "values": ['id', 'sql']}
    }
    }

}


class Linkage(object):  # 根据配置返回数据库数据    def __init__(self, request, model):
        self.data = json.loads(request.body)
        self.model = model
        self.action = self.data.get("action")
        self.table = self.data.get('table')

    def get_data(self):
        self.current_option_table = permit_option_dict.get(self.table).get("actions").get(self.action)  # 当前操作的表
        self.current_args_list = self.current_option_table.get('args')  # request传来的参数有哪些
        self.current_sql_value = self.current_option_table.get('values')  # query_set.value(值)
        self.current_args_filter_args = self.current_option_table.get('filter')
        self.current_args_filter_value = [self.data.get(i) for i in self.current_args_list]
        self.filter = dict(zip(self.current_args_filter_args, self.current_args_filter_value))
        data = list(getattr(self.model, self.table).objects.filter(**self.filter).values(*self.current_sql_value))        return json.dumps(data)


相关问题推荐

  • 回答 90

    现在有很多女生学习编程哦,尤其是前端,越来越多的女生学习,所以是合适的

  • 回答 13

    html插入图片有两种方式:一种是通过标签插入的正常的图片,另一种是通过>< style>问题分析:1、首先你是通过第二种方式插入的是背景图片,直接用width和height只能控制div的宽度和高度。2、如果你插入的图片是通过标签的方式来插入的话,可以通过自身的属性...

  • 回答 17

    html添加图片的方法如下:1、打开html软件。2、导入项目。3、找到要添加图片的位置。4、写【imgsrc=图片路径】即可。

  • 回答 2

    1、默认状态下,背景会延伸到边框的区域下层2、可以通过 background-clip 属性来调整上述默认行为所带来的不便;这个属性的初始值是 border-box, 意味着背景会被元素的 border box(边框的外沿框) 裁切掉实现半透明边框代码如下:body {         ...

  • 回答 9

    html图片对齐主要用text-align属性来控制:text-align的值主要又分为:left左对齐,center居中对齐,right靠右对齐。

  • 回答 8

    你没有设置好,具体解决方法如下。输入如下代码:width表示宽度height表示高度下图所示,我将图片的宽和高通通缩小,可以看到,图片的尺寸果然按照我的意愿进行了改变。

  • 回答 6

    设置表格单元格的外边距为0        css中设置border-collapse: collapse;       或者在table标签中写cellspacing=0px

  • 回答 5
    已采纳

    br是强制换行的,一般用在段落文字里边的换行。

  • 回答 6

    1. 原生。直接告诉你,开发太慢,不能跨平台,先不要学。2. 使用WebView的hybrid app,Cordova/ionic 这些。就是用浏览器运行html,js,css仿app,我用了好几年,学习快,开发块,跨平台。问题是每个安卓版本/苹果版本/浏览器版本运行效果不一致,有些版本还运...

  • 回答 8

    常用的移动APP开发框架:1、框架:PhoneGapPhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。优点:可跨平台。phonegap框架帮我们解决了差异性,javascript与平台系统的连接由phonegap框架完成。    提供硬件访问控...

  • 回答 6

      1. LungoJS  这个是被认为开发移动网站最好的HTML5开发框架,使用 HTML5/CSS3 和 JavaScript 技术。可帮助创建基于 iOS、 Android、 Blackberry 和 WebOS 平台的应用程序。该框架可利用当前移动设备的高级特性,可捕捉事件包括滑动、触屏、长按等。无需...

  • 回答 11

    应该是样式不一样造成的

  • 回答 5

    1、使用meta标签:viewportH5移动端页面自适应普遍使用的方法,理论上讲使用这个标签是可以适应所有尺寸的屏幕的,但是各设备对该标签的解释方式及支持程度不同造成了不能兼容所有浏览器或系统。viewport 是用户网页的可视区域。翻译为中文可以叫做视区。手机...

  • 回答 3

    就是标签上的一个属性,比如:js获取的时候是:obj.getAttribute(data-type);做一些逻辑操作或者唯一标示等,很方便的。

  • 回答 5

    src标签中放的是你的图片的路径,其中可以使用相对路径和绝对路径,相对路径就是你的图片在电脑中的存放位置,绝对路径就是指一些网站地址。alt标签中可以输入文本,当图片的路径错误时就会显示该文本内容。title标签中的值也是文本,当你鼠标悬停是所显示的...

没有解决我的问题,去提问