Django的简单使用( 四 )

4. 字段属性和选项4.1 模型类属性命名限制

  1. 不能是python的保留关键字 。
  2. 不允许使用连续的下划线,这是由django的查询方式决定的 。
  3. 定义属性时需要指定字段类型 , 通过字段类型的参数指定选项,语法如下:
属性名=models.字段类型(选项)
4.2 字段类型使用时需要引入django.db.models包,字段类型如下:
4.3 字段选项通过选项实现对字段的约束,选项如下:
对比:null是数据库范畴的概念,blank是后台管理页面表单验证范畴的 。
经验:
当修改模型类之后,如果添加的选项不影响表的结构,则不需要重新做迁移,商品的选项中default和blank不影响表结构 。
参考文档:
python.usyiyi.cn/translate/django_182/index.html" rel="external nofollow noreferrer">http://python.usyiyi.cn/translate/django_182/index.html
5. 查询5.1 mysql的日志文件mysql.log是mysql的日志文件,里面记录的对MySQL数据库的操作记录 。默认情况下mysql的日志文件没有产生 , 需要修改mysql的配置文件 , 步骤如下:
  1. 使用下面的命令打开mysql的配置文件,去除68,69行的注释,然后保存 。
sudo vi /etc/mysql/mysql.conf.d/mysqld.cnf
  1. 重启mysql服务,就会产生mysql日志文件 。
sudo service mysql restart
  1. 打开MySQL的日志文件 。
/var/log/mysql/mysql.log 是mysql日志文件所在的位置 。
使用下面的命令可以实时查看mysql的日志文件:
sudo tail -f /var/log/mysql/mysql.log
5.2 查询函数通过模型类.objects属性可以调用如下函数,实现对模型类对应的数据表的查询 。
get示例:
例:查询图书id为3的图书信息 。
all方法示例:
例:查询图书所有信息 。
filter方法示例:
条件格式:
模型类属性名__条件名=值
查询图书评论量为34的图书的信息:
a) 判等 条件名:exact
例:查询编号为1的图书 。# Django models 语法BookInfo.objects.get(id=1)b) 模糊查询
例:查询书名包含’传’的图书 。contains
BookInfo.objects.filter(btitle__contains='传')例:查询书名以’部’结尾的图书 endswith 开头:startswith
BookInfo.objects.filter(btitle__endswith='部')c)空查询 isnull
例:查询书名不为空的图书 。isnullselect * from booktest_bookinfo where btitle is not null;# Django models 语法BookInfo.objects.filter(btitle__isnull=False)d)范围查询 in
例:查询id为1或3或5的图书 。select * from booktest_bookinfo where id in (1,3,5);# Django models 语法BookInfo.objects.filter(id__in = [1,3,5])e)比较查询 gt(greate than) lt(less than) gte(equal) 大于等于
lte 小于等于
例:查询id大于3的图书 。Select * from booktest_bookinfo where id>3;# Django models 语法BookInfo.objects.filter(id__gt=3)f)日期查询
# 例:查询1980年发表的图书 。BookInfo.objects.filter(bpub_date__year=1980)# 例:查询1980年1月1日后发表的图书 。from datetime import dateBookInfo.objects.filter(bpub_date__gt=date(1980,1,1))exclude方法示例:
# 例:查询id不为3的图书信息 。BookInfo.objects.exclude(id=3)order_by方法示例:
作用:进行查询结果进行排序 。
# 例:查询所有图书的信息,按照id从小到大进行排序 。BookInfo.objects.all().order_by('id')# 例:查询所有图书的信息,按照id从大到小进行排序 。BookInfo.objects.all().order_by('-id')# 例:把id大于3的图书信息按阅读量从大到小排序显示 。BookInfo.objects.filter(id__gt=3).order_by('-bread')6. F对象作用:用于类属性之间的比较 。
使用之前需要先导入:
from django.db.models import F# 例:查询图书阅读量大于评论量图书信息 。BookInfo.objects.filter(bread__gt=F('bcomment'))# 例:查询图书阅读量大于2倍评论量图书信息 。BookInfo.objects.filter(bread__gt=F('bcomment')*2)7. Q对象作用:用于查询时条件之间的逻辑关系 。not and or,可以对Q对象进行&|~操作 。
使用之前需要先导入:
from django.db.models import Q# 例:查询id大于3且阅读量大于30的图书的信息 。BookInfo.objects.filter(id__gt=3, bread__gt=30)BookInfo.objects.filter(Q(id__gt=3)&Q(bread__gt=30))# 例:查询id大于3或者阅读量大于30的图书的信息 。BookInfo.objects.filter(Q(id__gt=3)|Q(bread__gt=30))

推荐阅读