Django数据库操作

Posted MacoLee

tags:

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

刚学到Django的数据库操作,把它记录下来,方便以后查看:

在Django中定义数据库表,并使用Django提供的方法来对数据库进行操作(增、删、改、查)

1、定义3个数据库表:
 1 class Group(models.Model):
 2     name = models.CharField(max_length=50,default=None)
 3 
 4 class User(models.Model):
 5     name = models.CharField(max_length=50,default=None)
 6     Email = models.CharField(max_length=50,default=None)
 7 
 8     group_relation = models.ManyToManyField(Group,default=None)   #生成多对多表
 9 
10 class Asset(models.Model):
11     hostname = models.CharField(max_length=50,default=None)
12     create_date = models.DateTimeField(auto_now_add=True)
13     update_date = models.DateTimeField(auto_now=True)

2、向数据库中添加内容
1 Asset.objects.create(hostname=name)
2 
3 #多对多添加数据
4 u1 = User.objects.filter(id=1)
5 g1 = Group.objects.filter(id=1)
6 u1.group_relation.add(g1)
7 g1.user_set.add(u1)

3、从数据库中删除内容
1     Asset.objects.get(id=id).delete()
2 
3     # 多对多删除数据
4     u1 = User.objects.filter(id=1)
5     g1 = Group.objects.filter(id=1)
6     u1.group_relation.delete(g1)
7     g1.user_set.delete(u1)

4、修改数据库中的内容
1     #根据id修改hostname
2     obj = Asset.objects.get(id=id)
3     obj.hostname=hostname
4     obj.save()
5 
6     #所有id大于传入参数的,就将hostname修改
7     Asset.objects.filter(id__gt=id).update(hostname=hostname)

5、查询数据库中的内容
 1     # 多对多获取数据
 2     u1 = User.objects.filter(id=1)
 3     g1 = Group.objects.filter(id=1)
 4     u1.group_relation.all()
 5     u1.group_relation.all().filter(id=1)
 6     g1.user_set.all()
 7     g1.user_set.all().filter(email=‘‘)
 8 
 9     #查找所有id大于传入参数的数据
10     Asset.objects.filter(id__gt=id)
11     #查找所有hostname包含传入参数的数据
12     Asset.objects.filter(hostname__contains=hostname)
13     #查找类型id等于5的所有用户信息---type__id:type表示UserInfo表中的type字段(对应type表的外键),__id表示与userinfo表相关联的type表的id
14     UserIfo.objects.filter(type__id = 5)
15     #取出所有数据
16     Asset.objects.all()
17     #取出所有数据的前两条数据
18     Asset.objects.all()[0:2]
19     # 取出所有数据,并进行排序---id:按id正序排列,倒序就用‘-id‘
20     Asset.objects.all().order_by(id)
21     # 取出所有数据中的id和hostname列数据
22     Asset.objects.all().values(id,hostname)

 



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

Django models ORM基础操作--白话聊Django系列

Django模型层之多表操作

Django之多表操作

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

Django之ORM操作

Django orm的使用