标签:ref settings 页面 curd 关联 取出 port 个数 django
models操作
单表查询:
curd(增删改查)
多表查询:
# 一次性查出所有的数据,进行一次跨表查询 只能在有ForeignKey的表中正向使用,
select_realated():
进行一次跨表查询
user_list = Models.UserInfo.objetcts.all()
for row in user_list:
print(row.username,row.email,row.part_id,row.part.title) # 如果像这样查询(row.part.title将会进行一次跨表查询)
user_list = Models.UserInfo.objetcts.all().select_realated(‘part‘) # 只会进行一次跨表查询
# 进行两次单表查询 (进行多次单表查询,Django会自动进行关系关联)
prefetch_realated():
user_list = Models.UserInfo.objetcts.all().prefetch_realated(‘part‘)
# 第一句 : Models.UserInfo.objetcts.all()
# 第二句 : Models.Part.objetcts.filter(id__in=[上一句查询数据的part_id列表])
for row in user_list:
print(row.username,row.email,row.part_id,row.part.title) # 使用方法和之前一样,
# user_list = Models.UserInfo.objetcts.all().prefetch_realated(‘part‘,‘usertype‘,‘part__ut‘)
# 第一句:Models.UserInfo.objetcts.all()
# 第二句:Models.Part.objetcts.filter(id__in=part_id)
# 第三句:Models.UserInfo.objetcts.filter(id__in=usertype_id)
其他:
only为指定取的数据,
defer为指定不取的数据
通过这个方式取出的数据为queryset类型,如果要使用对象中其他没有查询的字段,多进行多余的sql查询
models.UserInfo.objetcts.all().only(‘id‘,‘name‘)
models.UserInfo.objetcts.all().defer(‘id‘,‘name‘)
Django中提供六中缓存方式:
1.开发调试 # 不缓存
2.内存
3.文件
4.数据库
5.Memcache缓存(python-memcache模块)
6.Memcache缓存(pylibmc模块)
a.开发调试缓存配置(settings中配置)
# 此为开始调试用,实际内部不做任何操作
# 配置:
CACHES = {
‘default‘: {
‘BACKEND‘: ‘django.core.cache.backends.dummy.DummyCache‘, # 引擎
‘TIMEOUT‘: 300, # 缓存超时时间(默认300,None表示永不过期,0表示立即过期)
‘OPTIONS‘:{
‘MAX_ENTRIES‘: 300, # 最大缓存个数(默认300)
‘CULL_FREQUENCY‘: 3, # 缓存到达最大个数之后,剔除缓存个数的比例,即:1/CULL_FREQUENCY(默认3)
},
‘KEY_PREFIX‘: ‘‘, # 缓存key的前缀(默认空)
‘VERSION‘: 1, # 缓存key的版本(默认1)
‘KEY_FUNCTION‘ 函数名 # 生成key的函数(默认函数会生成为:【前缀:版本:key】)
}
}
# 自定义key
def default_key_func(key, key_prefix, version):
"""
Default function to generate keys.
Constructs the key used by all other methods. By default it prepends
the `key_prefix‘. KEY_FUNCTION can be used to specify an alternate
function with custom key making behavior.
"""
return ‘%s:%s:%s‘ % (key_prefix, version, key)
def get_key_func(key_func):
"""
Function to decide which key function to use.
Defaults to ``default_key_func``.
"""
if key_func is not None:
if callable(key_func):
return key_func
else:
return import_string(key_func)
return default_key_func
史蒂夫
Python【第十九课】Django缓存,信号,序列化,抽屉页面分析
标签:ref settings 页面 curd 关联 取出 port 个数 django
原文地址:http://www.cnblogs.com/40kuai/p/6994352.html