django一对一,一对多,多对多

一对一:A表从B表中选出一条数据一一对应,母表中选出来一条就少一条,子表不可以再选择母表中已被选择的那条数据
一对多:A表从B表中选出一条数据一一对应,但母表的这条数据还可以被其他子表数据选择
多对多:对于A表与B表双向均是可以有多个选择
外键:将A表与B表关联起来。

from django.shortcuts import render
from django.http import HttpResponse
from .models import UserInfo,AddressInfo
from django.db.models import Q,F

def Register(request):
a = UserInfo.objects.all()
username = a[0].username

# 1.找到id=1 的用户的名字
user_obj = UserInfo.objects.get(id=1)
print(user_obj.username)
# 2\找出所有的姓张的用户
user_list = UserInfo.objects.filter(username__startswith='张')
print(user_list)
for i in user_list:
    print(i.username)

# 3\找出所有包含张的用户
use_list1 = UserInfo.objects.filter(Q(username__contains='zhang') | Q(username__contains='张'))
print(use_list1)

# 4\找出所有姓张的id>2的用户
use_list2 = UserInfo.objects.filter(Q(username__startswith='张') & Q(id__gt=2))
print(use_list2)

# 5\找出电话号码大于密码用户
use_list3 = UserInfo.objects.filter(phone__gt=F('password'))
print(use_list3)

# 6\找出xiaozhang的y所有地址,一对多
user_obj1 = UserInfo.objects.get(username='张三')

zhang_list = user_obj1.addressinfo_set.all()
print(zhang_list)
return render(request,'a.html',{'name':'username'})

猜你喜欢

转载自blog.csdn.net/kasumiutaha/article/details/84961245