django的数据库操作回顾

Posted bai_nian_min_guo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django的数据库操作回顾相关的知识,希望对你有一定的参考价值。

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)
=====> 多对多即使基于一对多来构造

以上是关于django的数据库操作回顾的主要内容,如果未能解决你的问题,请参考以下文章

flask_day05:信号 Django信号 flask-script sqlalchemy 创建操作数据表

Django之多表操作

Django模型层之多表操作

Django之模型层第二篇:多表操作

Django框架05 /orm单表操作

Django学习日记-08回顾--温故知新