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数据库操作的主要内容,如果未能解决你的问题,请参考以下文章