classBoy(models.Model): name = models.CharField(max_length=32,null=True)
classGirl(models.Model): nick = models.CharField(max_length=32,null=True)
classLove(models.Model): b = models.ForeignKey("Boy",null=True) g = models.ForeignKey("Girl",null=True)
test4及以后
1 2 3 4 5
classBoy(models.Model): name = models.CharField(max_length=32,null=True) g = models.ManyToManyField("Girl",null=True) classGirl(models.Model): nick = models.CharField(max_length=32,null=True)
1 2 3 4 5 6 7 8
classUserType(models.Model): title = models.CharField(max_length=32, null=True)
classUserInfo(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32, null=True) age = models.CharField(max_length=32, null=True) ut = models.ForeignKey(UserType, null=True) ### 加上一个ud_id
# 使用Boy/Girl/Love三张表 测试多对多 res = models.Boy.objects.filter(name='胡心亚').first() # 获取胡心亚对象 love_list = res.love_set.all() # 相亲记录 for obj in love_list: print(obj.g.nick) # Love的条目对象通过外键连接到Girl表找到对应的nickname
1(2). 查询和xx约会的女生
1 2 3 4 5 6 7 8 9
# b__name双下划线跨表找到的对端表字段属性 res = models.Love.objects.filter(b__name='胡心亚').all() # <QuerySet [<Love: Love object>, <Love: Love object>, <Love: Love object>]> for obj in res: print(obj.g.nick) # 波多野结衣 # 三上悠亚 # 宇都宫紫苑 # print(res)
## 3 like res = models.UserInfo.objects.filter(name__startswith="V") for obj in res: print(obj.name) # Venti ### startswith: 以 某单词开头 ### istartswith : ignore (忽略) 以 某单词开头 忽略大小写 res = models.UserInfo.objects.filter(name__istartswith="v") for obj in res: print(obj.name) # Venti
## endswith : 以 某个单词结尾 ## iendswith: ignore (忽略) 以 某单词结尾 忽略大小写 res = models.UserInfo.objects.filter(name__endswith='ze') res = models.UserInfo.objects.filter(name__iendswith='ze')
### 11. 表中总共多少条数据 res = models.UserInfo.objects.count() # print(res)
first
1 2 3
### 12. 第一条数据 res = models.UserInfo.objects.first() # print(res)
last
1 2
## 13.最后一条数据 res = models.UserInfo.objects.last()
gt lt gte lte
1 2 3 4 5
## 14.gt lt res = models.UserInfo.objects.filter(id__gt=3) res = models.UserInfo.objects.filter(id__gte=3) res = models.UserInfo.objects.filter(id__lt=3) res = models.UserInfo.objects.filter(id__lte=3)
and
1 2 3
### 15. and操作 res = models.UserInfo.objects.filter(id=1, name='zekai') # print(res.query)
Q
1 2 3 4
### 16.or操作 from django.db.models import Q res = models.UserInfo.objects.filter( Q(Q(id=1) | Q(name='zekai')) & Q(name='xxxx') ) # print(res.query)
F
1 2 3
### 17. 在原来的基础上更新值 全选加减乘除乘方 from django.db.models import F models.UserInfo.objects.update(age = F('age') + 1)
原生SQL connection
1 2 3 4 5 6 7
## 18。原生sql from django.db import connection cursor = connection.cursor() cursor.execute("select * from app01_userinfo where id=%s", [1,]) res = cursor.fetchall() res = cursor.fetchone() # # print(res)
原生SQL raw
1 2
## 19. 原生sql models.UserInfo.objects.raw('select * from app01_userinfo')