zoukankan      html  css  js  c++  java
  • Django的orm需要注意的地方

    1. 区别

      基于对象的跨表查询相当于sql的子查询

      基于双下划綫的跨表查询类似于sql的联表查询

    2. 基于对象的查询

    """
        正向查询 按外键字段
        一对一,多对一,多对多都是用"."来连接
    
            是否需要加all()
            
            多对多的时候需要加all()
            一对多和一对一都不需要加all()
            
            外键字段关联的数据可能有多条还是单条
            有多条则需要加all
            没有则不需要
            
        书写orm语句跟写sql语句一致  不要想着一次性将语句书写完成
        写一步执行看结果 再接着写
    """
    """
        反向查询  按表名小写
          一对一只需要表名小写
          多对一和多对多可能需要:(不加_set.all()如果不出错就不加,如果出错就加上)     什么时候需要加_set.all()     当结果可能有多个的时候     不需要加_set.all()     当结果只会是一个的时候
    """

    3. 基于双下划綫的跨表查询

    正向查询用 关联字段+双下划线
    反向查询用 表名小写+双下划线


    class UserInfo(AbstractUser):  # 需要扩展User,所以要继承AbstractUser
        phone = models.BigIntegerField(verbose_name='手机号', null=True, blank=True)  # 该字段可以不填

    本段代码中null=True是告诉数据库字段可以为空
    blank=True是告诉Django admin后台管理字段可以为空



  • 相关阅读:
    directUI
    PyLucene测试成功
    MFC笔记(1)CPaintDC, CClientDC
    sprintf缓冲区溢出
    2.5 攻击示例:对Microsoft C++编译器的攻击 ZZ
    C++笔记(3)类中与类外的运算符重载
    C++笔记(2)public,private,protected关键字
    RTSP协议
    使用虚函数,减少累赘的if/else/switch
    C++笔记(4)成员函数定义在类内与类外
  • 原文地址:https://www.cnblogs.com/JackShi/p/12685402.html
Copyright © 2011-2022 走看看