1、数据库操作
- 单表操作
- all
- filter
models.tb.objects.filter(id=123)
dic = {‘id‘: 123, ‘age__gt‘: 3}
models.tb.objects.filter(**dic)
- count
- order_by
...
- 一对多
# id name
1 河北
2 广东
3 山东
class Province(models.Model):
name = models.CharField(max_length=32,)
# nid = models.Intergar(unique=True) # 唯一
# id name pro
1 东莞 2
2 深圳 2
3 惠州 2
4 河源 2
5 泰安 3
6 青岛 3
7 济南 3
8 张家口 1
9 邢台 1
class City(models.Model):
name = models.CharField(max_length=32)
pro = models.ForeignKey("Province", to_filed=‘id‘)
默认是关联Province的id,我们这样就可以关联Province表的指定字段,如果关联某个表得指定字段,那么这个表的指定字段必须要设置为唯一unique=True)
1、 正向查找,通过有foreignkey的表查找
result = models.City.objects.all() 对象
result[0].pro.name
models.City.objects.all().values(‘id‘,‘name‘,‘pro_id‘,‘pro__id‘,‘pro__name‘) 字典
models.City.objects.all().values_list(‘id‘,‘name‘,‘pro_id‘,‘pro__id‘,‘pro__name‘) 列表
2、反向查找,通过没有foreignkey的表查找
result = models.a3 = pro.city_set.all().objects.values(‘id‘,‘name‘, ‘city__name‘)
result = models.Province.objects.all()
result[0] # 获取河北
result[0].city_set.all() # 获取河北下的所有市 张家口 、邢台
for pro in result:
a1 = pro.id
a2 = pro.name
a3 = pro.city_set.all()
这里获取的某个省的所有的市
a3 = pro.city_set.filter(id_lt)
city_set后可以使用filter,all等方法
print(a1,a2,a3)
=====> 多对多即使基于一对多来构造
原文地址:https://www.cnblogs.com/bainianminguo/p/8925747.html