01.一对多创建表
1.1 创建一对多表
from django.db import models
class UserInfo(models.Model):
name = models.CharField(max_length=64,unique=True)
ut = models.ForeignKey(to='UserType', on_delete=models.CASCADE)
class Meta:
db_table = 'tb_userinfo'
verbose_name = '用户信息'
verbose_name_plural = verbose_name
def __str__(self):
"""定义每个数据对象的显示信息"""
return self.name
class UserType(models.Model):
type_name = models.CharField(max_length=64,unique=True)
class Meta:
db_table = 'tb_usertype'
verbose_name = '用户类型'
verbose_name_plural = verbose_name
1.2 ForeignKey可选参数
1、to,
2、to_field=None,
3、on_delete=None,
- models.CASCADE
- models.DO_NOTHING
- models.PROTECT
- models.SET_NULL
- models.SET_DEFAULT
- models.SET
4、related_name=None,
5、delated_query_name=None,
6、limit_choices_to=None,
- limit_choices_to={'nid__gt': 5}
- limit_choices_to=lambda : {'nid__gt': 5}
7、db_constraint=True
8、parent_link=False
1.3 一对多基本查询
from django.shortcuts import render,HttpResponse
from app01 import models
def orm(request):
models.UserInfo.objects.create(name='root', ut_id=2)
obj = models.UserInfo(name='root', ut_id=2)
obj.save()
dic = {'name': 'root', 'ut_id': 2}
models.UserInfo.objects.create(**dic)
models.UserInfo.objects.filter(name='root').delete()
print( models.UserInfo.objects.get(name='zhangsan').ut.type_name )
print( models.UserInfo.objects.filter(ut__type_name='student') )
print( models.UserType.objects.get(type_name='student').userinfo_set.all() )
print( models.UserType.objects.get(type_name='student').userinfo_set.filter(name='zhangsan') )
return HttpResponse('orm')
02.正向反向查
from django.db import models
class UserType(models.Model):
user_type_name = models.CharField(max_length=32)
def __str__(self):
return self.user_type_name
class User(models.Model):
username = models.CharField(max_length=32)
pwd = models.CharField(max_length=64)
ut = models.ForeignKey(
to='UserType',
to_field='id',
related_query_name='a',
)
2.2 正向方向查
from django.shortcuts import HttpResponse
from app01 import models
def orm(request):
print(models.User.objects.get(username='zhangsan').username)
print(models.User.objects.get(username='zhangsan').ut.user_type_name)
print( models.User.objects.all().values('ut__user_type_name','username') )
print( models.UserType.objects.get(user_type_name='student').user_set.all() )
print( models.UserType.objects.filter(a__username='zhangsan') )
print( models.UserType.objects.all().values('a__username', 'user_type_name') )
'''
username = [{'username':'zhangsan','pwd':'123','ut_id':'1'},
{'username':'lisi','pwd':'123','ut_id':'1'},
{'username':'wangwu','pwd':'123','ut_id':'1'},]
user_type = [{'user_type_name':'student'},{'user_type_name':'teacher'},]
for type_dic in user_type:
models.UserType.objects.create(**type_dic)
for user_dic in username:
models.User.objects.create(**user_dic)
'''
return HttpResponse('orm')
03.values和values_list
from django.shortcuts import HttpResponse
from app01 import models
def orm(request):
models.User.objects.filter(username='zhangsan').values('username', 'ut__user_type_name')
models.UserType.objects.all().values('user_type_name', 'a__username')
stus = models.User.objects.filter(username='zhangsan').values_list('username', 'ut__user_type_name')
utype = models.UserType.objects.all().values_list('user_type_name', 'a__username')
'''
username = [{'username':'zhangsan','pwd':'123','ut_id':'1'},
{'username':'lisi','pwd':'123','ut_id':'1'},
{'username':'wangwu','pwd':'123','ut_id':'1'},]
user_type = [{'user_type_name':'student'},{'user_type_name':'teacher'},]
for type_dic in user_type:
models.UserType.objects.create(**type_dic)
for user_dic in username:
models.User.objects.create(**user_dic)
'''
return HttpResponse('orm')