Django之models模型层、测试环境的搭建
一、models层中
1、.values()和.values_list()方法
默认查询所有的字段,也可以指定某一个字段
res = models.Userinfo.objects.values() # 默认查询所有的字段
# <QuerySet [{'id': 1, 'username': 'cc1', 'password': '123'}, {'id': 2, 'username': 'cc2', 'password': '123'}, {'id': 3, 'username': 'cc3', 'password': '123'}]>
res = models.Userinfo.objects.values('username')
# <QuerySet [{'username': 'cc1'}, {'username': 'cc2'}, {'username': 'cc3'}]>
res = models.Userinfo.objects.values_list()
# <QuerySet [(1, 'cc1', '123'), (2, 'cc2', '123'), (3, 'cc3', '123')]>
print(res)
2、排序
order by age asc/desc
res = models.User.objects.all().order_by('age') # 默认是升序排列
res = models.User.objects.all().order_by('-age') # 降序排列
res = models.User.objects.all().order_by('age', 'id') # 降序排列
res = models.User.objects.all().order_by('age', '-id', '') # 降序排列
3、去重,
每一条数据都要完全一样,如果说带主键,一定不会重复
res = models.User.objects.all().values('password', 'age').distinct()
print(res)
4、反转,先排序,数据要先有序才能反转
降序---> 升序
res=models.User.objects.all().order_by('-age').reverse()
print(res)
5、count
select count(*) from user res = models.User.objects.count() print(res)
6、exclude 排除
res=models.User.objects.exclude(username='kevin1') print(res)
7、exist 是否存在
res = models.UserInfo.objects.filter(pk=1).exist() print(res)
二、测试环境的搭建
1、app应用中默认有一个tests.py的测试文件,拷贝manage.py的内容如下到tests.py中
此时这个测试文件就能使用django环境了
import os
import sys
if __name__ == '__main__':
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject222.settings')
import django
django.setup()
from app01 import models
三、
1、方法一
print(res.query)
res = models.Userinfo.objects.values() # 默认查询所有的字段 print(res) print(res.query) ## 输出 SELECT "app01_userinfo"."id", "app01_userinfo"."username", "app01_userinfo"."password" FROM "app01_userinfo"
2、方法二
修改settings配置文件
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
},
}
}