今日学习
作者:互联网
#### F Q查询
1. 导包
- 导入F Q
- 导入要操作的模型类
2. F:同一个表中字段进行比较时用F查询
- 模型类.objects.filter(字段条件 = F("字段"))
- Movies.objects.filter(id__gt=F("price"))
- 语法 F("属性名") 属性名加引号
3. Q:多个条件时用Q查询
- 如果条件之间是并且的关系(多个过滤器连续操作、Q查询)
- 如果条件之间是或者的关系必须用Q查询
- Movies.objects.filter(Q(id__gt=2) | Q(price__gt=5))
- Q(字段__条件)
#### 表关系
1. 一对多
- mysql中的外键
1. 外键是一种约束,外键不是让2张表产生关系的,是限制外键字段更新和插入数据的
- django中的外键
1. 老师模型类 名字 性别
2. 学生模型类 姓名 分数 所属老师
- 外键
```python
# 所属老师 to:关联的模型类
# on_delete:models.CASCADE :如果主表中数据删除 那么从表中数据也删除
# django中的外键字段会默认多一个_id
tea = models.ForeignKey(to=Teacher,on_delete=models.CASCADE,verbose_name="所属老师id")
```
- 增删改查
1. 增加数据
- 增加老师
模型类.objects.create(字段=值...)
t1是随便起的变量名
t1 = Teacher.objects.create(name= "曹老师",gender="女")
- 增加学生
1.Student.objects.create(name="小明",score=20,tea_id=2) # 通过外键_id的形式来添加
2.Student.objects.create(name="小明",score=20,tea=老师对象) # 直接给外键赋值一个老师对象
Student.objects.create(name="小华",score=40,tea=t1)
2. 查询数据
- 查询老师
查询id为2的老师以及它的学生(通过老师查询学生)--(由一查多) 反向查询 特别重要
Student.objects.filter(tea_id=2)
1.先询id为2的老师并且存到变量李
t2 = Teacher.objects.get(id=2)
查询t2老师下的学生
t2.student_set.all()
- 查询学生
查询id为2的学生以及他的老师姓名---(由多查一) 正向查询
1. 先将id为2的学生查询出来
s1 = Student.objects.get(id=2)
2. 根据查询出来的学生信息找到对应的老师
s1.外键.查询的字段
3. 删除数据
- 删除老师
1. 删除id为1的老师信息
Teacher.objects.get(id=1).delete()
搜索
复制
标签:name,老师,外键,查询,学习,objects,今日,id 来源: https://www.cnblogs.com/qq0523/p/16414266.html