zoukankan      html  css  js  c++  java
  • django ORM 操作

    ORM操作
    select * from tb where id > 1
    # 对应关系
    models.tb.objects.filter(id__gt=1)
    models.tb.objects.filter(id=1)
    models.tb.objects.filter(id__lt=1)

    创建类

    a. 先写类
    from django.db import models

    # app01_userinfo
    class UserInfo(models.Model):
    # id列,自增,主键
    # 用户名列,字符串类型,指定长度
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)

    b. 注册APP

    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
    ]
    c. 执行命令
    python manage.py makemigrations
    python manage.py migrate

    d. ********** 注意 ***********
    Django默认使用MySQLdb模块链接MySQL
    主动修改为pymysql,在project同名文件夹下的__init__文件中添加如下代码即可:
    import pymysql
    pymysql.install_as_MySQLdb()

    1. 根据类自动创建数据库表
    # app下的models.py

    python manage.py makemigrations
    python manage.py migrate


    字段:
    字符串类型


    数字


    时间


    二进制

    自增(primary_key=True)

    字段的参数:
    null -> db是否可以为空
    default -> 默认值
    primary_key -> 主键
    db_column -> 列名
    db_index -> 索引
    unique -> 唯一索引
    unique_for_date ->
    unique_for_month
    unique_for_year
    auto_now -> 创建时,自动生成时间
    auto_now_add -> 更新时,自动更新为当前时间

    # obj = UserGroup.objects.filter(id=1).update(caption='CEO')
    # obj = UserGroup.objects.filter(id=1).first()
    # obj.caption = "CEO"
    # obj.save()

    choices -> django admin中显示下拉框,避免连表查询
    blank -> django admin是否可以为空
    verbose_name -> django admin显示字段中文
    editable -> django admin是否可以被编辑
    error_messages -> 错误信息欠
    help_text -> django admin提示
    validators -> django form ,自定义错误信息(欠)


    创建 Django 用户:python manage.py createsuperuser




    2. 根据类对数据库表中的数据进行各种操作

    一对多:

    a. 外检
    b.
    外键字段_id
    c.
    models.tb.object.create(name='root', user_group_id=1)

    d.

    userlist = models.tb.object.all()
    for row in userlist:
    row.id
    row.user_group_id
    row.user_group.caption

    ---------------------------------------------------------------------------------------------------------------------------------------------------------------------

    a. 创建类和字段
    class User(models.Model):
    age = models.IntergerFiled()
    name = models.CharField(max_length=10)#字符长度

    Python manage.py makemigrations
    python manage.py migrate

    # settings.py 注册APP

    b. 操作
    王赛鹏


    models.User.objects.create(name='qianxiaohu',age=18)
    dic = {'name': 'xx', 'age': 19}
    models.User.objects.create(**dic)


    obj = models.User(name='qianxiaohu',age=18)
    obj.save()

    models.User.objects.filter(id=1).delete()

    models.User.objects.filter(id__gt=1).update(name='alex',age=84)
    dic = {'name': 'xx', 'age': 19}
    models.User.objects.filter(id__gt=1).update(**dic)

    models.User.objects.filter(id=1,name='root')
    models.User.objects.filter(id__gt=1,name='root')
    models.User.objects.filter(id__lt=1)
    models.User.objects.filter(id__gte=1)
    models.User.objects.filter(id__lte=1)

    models.User.objects.filter(id=1,name='root')
    dic = {'name': 'xx', 'age__gt': 19}
    models.User.objects.filter(**dic)

    v1 = models.Business.objects.all()
    # QuerySet ,内部元素都是对象

    # QuerySet ,内部元素都是字典
    v2 = models.Business.objects.all().values('id','caption')
    # QuerySet ,内部元素都是元组
    v3 = models.Business.objects.all().values_list('id','caption')

    # 获取到的一个对象,如果不存在就报错
    models.Business.objects.get(id=1)
    对象或者None = models.Business.objects.filter(id=1).first()


    外键:
    v = models.Host.objects.filter(nid__gt=0)
    v[0].b.caption ----> 通过.进行跨表






    外键:
    class UserType(models.Model):
    caption = models.CharField(max_length=32)
    id caption
    # 1,普通用户
    # 2,VIP用户
    # 3, 游客

    class User(models.Model):
    age = models.IntergerFiled()
    name = models.CharField(max_length=10)#字符长度
    # user_type_id = models.IntergerFiled() # 约束,
    user_type = models.ForeignKey("UserType",to_field='id') # 约束,

    name age user_type_id
    # 张扬 18 3
    # 张A扬 18 2
    # 张B扬 18 2

  • 相关阅读:
    今天才知道的JavaScript的真实历史~[转]
    JQuery实现可编辑的表格
    详细记录ASP.NET中的图象处理
    使用javascript比较任意两个日期相差天数(代码)
    你所不知的 CSS ::before 和 ::after 伪元素用法
    javascript模拟post提交
    jQuery/javascript实现IP/Mask自动联想功能
    CSS 中的强制换行和禁止换行
    17.C++-string字符串类(详解)
    16.C++-初探标准库
  • 原文地址:https://www.cnblogs.com/topzhao/p/9297054.html
Copyright © 2011-2022 走看看