16、 Django-多表操作-多个模块的关联-一对一的增删改查- models.onetoone()
一对一不是数据库的一个连表操作、而是Django独有的一个连表操作、一对一相当于是特殊的一对多的关系、只是相当于加了unique=True
models.py
from django.db import models #身份证 class IDCard(models.Model): idcard_num = models.CharField(max_length=18, unique=True) address = models.CharField(max_length=200) #用户 class User(models.Model): name = models.CharField(max_length=30, unique=True) age = models.IntegerField(default=18) sex = models.BooleanField(default=True) #一对一的关系、相当于一对多的关系、在多的一方添加少的一方的对象 #这里多的一方指的是:对象多的一方、如一个身份证类可以对多个用户类的信息 idcard = models.OneToOneField(IDCard, on_delete=models.PROTECT) #数据迁移 #生成两个表、在表User中多一个idcard_id 这个字段就是IDCard 表中的id主键的数据
views.py
from django.shortcuts import render, HttpResponse from App_OnetoOne.models import * #一对一的增删改查和一对多的一样 #查询 def get(request): #查找某个用户的身份证信息 users = User.objects.get(pk=1) print(users.idcard) #拿到idcard的对象 print(users.name) #拿到对象信息姓名 #这里的idcard是models中定义的IDCard的对象 print(users.idcard.idcard_num) #拿到用户的身份证号 print(users.idcard.address) #拿到用户的地址 #查找身份证对应的用户 idcards = IDCard.objects.get(pk=1) print(idcards.user) #这是获取用户信息的对象、和上面的idcard一样 print(idcards.user.name, idcards.user.age, idcards.user.sex) #反过来通过身份证去查找用户 return HttpResponse('查询成功')
urls.py
from django.contrib import admin from django.urls import path #一对一 from App_OnetoOne import views as onetoone_view urlpatterns = [ #一对一 path('onetoone/getuser/', onetoone_view.get), path('admin/', admin.site.urls), ]
本文作者:little小新
本文链接:https://www.cnblogs.com/littlecc/p/18125161
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
分类:
标签:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步