zoukankan      html  css  js  c++  java
  • Django一对一查询,列类型及参数

    一对一查询

    表的创建

    # 通过 OneToOneField 创建一对一的关系
    from django.db import models
    
    # Create your models here.
    class StaffInfo(models.Model):
        name = models.CharField(max_length=32, null=True)
        age = models.CharField(max_length=32, null=True)
    
    class Salary(models.Model):
        money = models.CharField(max_length=32, null=True)
        staff = models.OneToOneField("StaffInfo")

    增删改查

    # 增    和普通一样
        models.StaffInfo.objects.create(name="xxx", age=12)
        models.Salary.objects.create(money=3000, staff_id=2)
    # 一对一关联的外键如果添加重复会报错,也就是说django已经帮我们做好了唯一索引
    
    # 删   和普通的也是一样的
        models.Salary.objects.filter(staff_id=2).delete()
    # 也有级联删除的问题, 可以通过on_delete 修改值取消级联删除
    
    # 改   和普通也一样
        models.Salary.objects.filter(staff_id=2).update(money=2000)
    
    # 查   分为正查和反差两种
        # 正查    通过点表中外键名跨表查询  row.staff.name
            res = models.Salary.objects.all()
            for row in res:
                print(row.money, row.staff.name)
        # 反差    点关联表的表明小写进行跨表查询  row.salary.money
            res = models.StaffInfo.objects.all()
            for row in res:
                print(row.name, row.salary.money)

    字段类型

    """
                MySQL列类型                                    Django列类型
                  tinyint                                           无
                  smallint (unsigned)                     SmallIntegerField (PositiveSmallIntegerField)
    数字类型      int (unsigned)                          IntegerField (PositiveSmallIntegerField)
                  mediumint                                         无
                  bigint (unsigned)                       BigIntegerField (PositiveBigIntegerField)
                  
                  float                                         FloatField
                  decimal(5,2)表示小数2位,最大长度5位           DecimalField
    
                  char                                              无
    字符串类型    varchar                                       VarCharField
                  text                                          TextField
                  
    时间类型      datetime(2019-7-1 1:1:1)                     DateTimeField
                  date    (2019-7-1)                           DateField
    """

    字段参数

    """
    max_length      最大长度
    
    null            是否为空
    
    default         默认值
    
    do_index        添加普通索引
    
    unique          添加唯一索引
    
    unique_together 联合唯一索引
    index_together  唯一索引        这两个联合索引需要放在 类Meta中
    class Meta:
        unique_together = (
            ("字段1", "字段2"),
            ......
        )
        index_together = (
            ("字段1", "字段2"),
            ......
        )
    """

     

     

    django-admin

    django-admin主要是django给我们提供的后台管理系统,我们可以在里面对数据进行增删改查

    1、django-admin如何打开

    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]

      我们创建项目时会自动生成如下rui  在浏览器输入对应的url即可进入django-admin

    2、创建用户

    """
    终端输入:
        python manage.py createsuperuser
    
    输入用户名  邮箱(可不写)  密码
    """

    3、想要管理自己生成的表

      需要在自己对应app的admin.py文件中注册一下

    from app02 import models
    
    admin.site.register(models.Student)
    admin.site.register(models.Teacher)

    4、django-admin中的列类型与参数

      以下的类型只有在django-admin的管理后台中起作用

    复制代码
    """
    前面为列类型, 括号中是我们从数据库中看到的类型
    EmailField(CharField)
        字符串类型,admin以及modelform用来输入验证是不是合法的邮箱字符串
    IPAddressField(Field)
        字符串类型  admin以及modelform用来输入IPV4 验证
    GenericIpAddressField(Field)
        字符串类型   用来输入 IPV4 以及 IPV6 验证
        参数:
            protocol    用于指定IPV4或IPV6   "both"  "ipv4"  "ipv6"
            unpack_ipv4 如果指定为True   则输入::ffff:192.0.2.1时候,可解析为192.0.2.1,开启此功能,需要protocol="both"
    URLField(CharField)
        字符串类型   用来输入url 验证
    SlugField(CharField)
        字符串     用来输入  数字 字母 下划线 连接符(减号) 验证
    CommaSeparatedIntegerField(CharField)
        字符串     验证   形式必须为  逗号分隔的数字
    UUIDField(Field)
        字符串     提供对uuid格式的验证
    FieldField(Field)
        可以选择文件  在数据库中看还是字符串类型
    
    django-admin中列的参数
        
        verbose_name       Admin中显示的字段名称(相当于给列名改个名字)
        blank              Admin中是否允许用户输入为空
        editable           Admin中是否可以编辑(设为False直接隐藏)
        help_text          Admin中该字段的提示信息
        choices            Admin中显示选择框的内容
        choice = (
            (1,"男"),
            (2,"女"),
        )
            如果你选择男,会把 1 存进数据库中
            因为性别是永远不会变动的,所以用不变动的数据存在内存避免跨表操作
            
        gender = IntegerField(choices=choices)
    """
    复制代码
  • 相关阅读:
    素数筛选法
    一种美-无法言语
    动态规划-钢条切割问题
    动态规划《开篇》
    判断两序列是否为同一棵二叉搜索树
    C++字符串转化为数字的库函数
    C++字符串类型和数字之间的转换
    遍历二叉树的非递归实现
    关于二叉树的问题1-已知前序,中序求后序遍历
    获取回车事件
  • 原文地址:https://www.cnblogs.com/huikejie/p/11213221.html
Copyright © 2011-2022 走看看