zoukankan      html  css  js  c++  java
  • 54.1 Django (models) 常用字段及参数 数据库查询优化 事物

    models 常用字段和参数

    models中的常用字段
    	AutoField(primary_key=True)  主键字段    如果没有主键字段django会自动创建一个id 为主键字段
    	CharField(max_length=32)     varchar(32)
    	IntegerField()               int
    	BigIntergerField()           bigint
    	DecimalField()               decimal
    	EmailField()                 varchart(254)
    	DateField()					 date
    	DateTimeField()              datetime
    		auto_now:每次编辑数据的时候都会自动更新该字段时间
    		auto_now_add:创建数据的时候自动更新 
    	BooleanField(Field)
    		给该字段传布尔值 会对应成  数字0/1
    		is_delete
    		is_status
    		is_vip
    	TextField(Field)
            - 文本类型
    		存储大段文本
    	FileField(Field)
            - 字符串,路径保存在数据库,文件上传到指定目录,只存文件路径
    		upload_to = '指定文件路径'
    		给该字段传文件对象 文件会自动保存到upload_to指定的文件夹下 然后该字段存文件的路径
    		
    	
    	
    	如何自定义char类型字段
    		from django.db.models import Field
    
    
    		class RealCharField(Field):
    			def __init__(self,max_length,*args,**kwargs):
    				self.max_length = max_length  # 拦截一个父类的方法 操作完之后 利用super调用父类的方法
    				super().__init__(max_length=max_length,*args,**kwargs)
    
    
    			def db_type(self, connection):
    				return 'char(%s)'%self.max_length
    		
    		class Movie(models.Model):
    			textField = RealCharField(max_length=64)
    字段内的关键性参数
    null
    default
    uique = True
    db_index = True


    django 1.x默认就是级联更新级联删除 django2.x需要你自己手动指定
    on_delete = models.CASCADE
    db_contraints = True

    字段chices参数

     

    自定义字段类型   继承的本质:拦截父类方法  调用父类__init__ 方法生成对象,可以确定父类中有max_length属性

    对象进行sql操作  打印sql语句的配置

    直接在setting文件中加入  如下语句即可

    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'console':{
                'level':'DEBUG',
                'class':'logging.StreamHandler',
            },
        },
        'loggers': {
            'django.db.backends': {
                'handlers': ['console'],
                'propagate': True,
                'level':'DEBUG',
            },
        }
    }
    

    数据库查询优化

     only 与 defer

     

     

    select_related  与  prefetch_related  

     select_related 与 prefetch_related  优缺点比较   不一定哪一种效率高  具体要看情况

      

  • 相关阅读:
    win10x64位系统中nodejs的安装和配置
    My97 DatePicker获取自定义日期的前一天
    easyUI在使用字符串拼接时样式不起作用,点击加号增加一行,点击减号删除一行效果。
    easyUI datagarid单元格动态合并
    js单体内置对象
    [BZOJ 1878][SDOI2009]HH的项链
    [BZOJ 3932][CQOI2015]任务查询系统
    [BZOJ 3123] 森林
    [BZOJ 3295] 动态逆序对
    [BZOJ 1901] Dynamic Rankings
  • 原文地址:https://www.cnblogs.com/bigbox/p/12172565.html
Copyright © 2011-2022 走看看