码迷,mamicode.com
首页 > 其他好文 > 详细

跨表操作

时间:2019-08-15 20:57:19      阅读:80      评论:0      收藏:0      [点我收藏+]

标签:closed   操作   use   char   跨表   set   har   creat   src   

一、一对多跨表:

  1.建表:

 技术图片
1 from django.db import models
2 
3 class UserInfo(models.Model):
4     username=models.CharField(max_length=32)
5     password=models.CharField(max_length=32)
6     ut=models.ForeignKey(to=UserType,on_delete=True)
7 class UserType(models.Model):
8     title=models.CharField(max_length=32)
View Code

   2.插入数据:

技术图片
 1 #创建数据
 2     models.UserType.objects.create(title=人事部)
 3     models.UserType.objects.create(title=财务部)
 4     models.UserType.objects.create(title=公关部)
 5 
 6     models.UserInfo.objects.create(username=杨国伟,password=123,ut_id=1)
 7     models.UserInfo.objects.create(username=石恩光,password=123,ut_id=1)
 8     models.UserInfo.objects.create(username=钱博文,password=123,ut_id=3)
 9     models.UserInfo.objects.create(username=杨理想,password=123,ut_id=2)
10     models.UserInfo.objects.create(username=周腾飞,password=123,ut_id=3)
View Code

  3.正向跨表

    UserInfo中有ForeignKey字段,从UserInfo到UserType是正向跨表,反之是反向跨表。

#三种不同取值方法的跨表操作
1
  obj=models.UserInfo.objects.filter(id=1).first()#获取一个UserInfo对象。结果是一个object 2 print(obj) 3 print(obj.username,obj.password,obj.ut_id,obj.ut.title) 4 obj=models.UserInfo.objects.values(username,password,ut_id,ut__title)#结果是一个字典 5 print(obj) 6 obj=models.UserInfo.objects.values_list(username,password,ut_id,ut__title)#结果是一个元组 7 print(obj)

  运行结果:

  UserInfo object (1)


  杨国伟 123 1 人事部


  <QuerySet [{‘username‘: ‘杨国伟‘, ‘password‘: ‘123‘, ‘ut_id‘: 1, ‘ut__title‘: ‘人事部‘}, {‘username‘: ‘石恩光‘, ‘password‘: ‘123‘, ‘ut_id‘: 1, ‘ut__title‘: ‘人事部‘}, {‘username‘: ‘钱博文‘,   ‘password‘: ‘123‘, ‘ut_id‘: 3, ‘ut__title‘: ‘公关部‘}, {‘username‘: ‘杨理想‘, ‘password‘: ‘123‘, ‘ut_id‘: 2, ‘ut__title‘: ‘财务部‘}, {‘username‘: ‘周腾飞‘, ‘password‘: ‘123‘, ‘ut_id‘: 3, ‘ut__title‘: ‘公关部‘}]>


  <QuerySet [(‘杨国伟‘, ‘123‘, 1, ‘人事部‘), (‘石恩光‘, ‘123‘, 1, ‘人事部‘), (‘钱博文‘, ‘123‘, 3, ‘公关部‘), (‘杨理想‘, ‘123‘, 2, ‘财务部‘), (‘周腾飞‘, ‘123‘, 3, ‘公关部‘)]>

  4.反向跨表

    obj.小写的表名_set

1   obj=models.UserType.objects.filter(id=1).first()
2     print(obj)
3     print(obj.userinfo_set.all())
4     for item in obj.userinfo_set.all():
5         print(item.username,item.password)
6     obj=models.UserType.objects.values(title,userinfo__username,userinfo__password)
7     print(obj)
8     obj = models.UserType.objects.values_list(title, userinfo__username, userinfo__password)
9     print(obj)

运行结果:  

UserType object (1)
<QuerySet [<UserInfo: UserInfo object (1)>, <UserInfo: UserInfo object (2)>]>
杨国伟 123
石恩光 123
<QuerySet [{‘title‘: ‘人事部‘, ‘userinfo__username‘: ‘杨国伟‘, ‘userinfo__password‘: ‘123‘}, {‘title‘: ‘人事部‘, ‘userinfo__username‘: ‘石恩光‘, ‘userinfo__password‘: ‘123‘}, {‘title‘: ‘公关部‘, ‘userinfo__username‘: ‘钱博文‘, ‘userinfo__password‘: ‘123‘}, {‘title‘: ‘财务部‘, ‘userinfo__username‘: ‘杨理想‘, ‘userinfo__password‘: ‘123‘}, {‘title‘: ‘公关部‘, ‘userinfo__username‘: ‘周腾飞‘, ‘userinfo__password‘: ‘123‘}]>
<QuerySet [(‘人事部‘, ‘杨国伟‘, ‘123‘), (‘人事部‘, ‘石恩光‘, ‘123‘), (‘公关部‘, ‘钱博文‘, ‘123‘), (‘财务部‘, ‘杨理想‘, ‘123‘), (‘公关部‘, ‘周腾飞‘, ‘123‘)]>

跨表操作

标签:closed   操作   use   char   跨表   set   har   creat   src   

原文地址:https://www.cnblogs.com/gwwj/p/11360331.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!