首页 > 其他分享 >16、 Django-多表操作-多个模块的关联-一对一的增删改查- models.onetoone()

16、 Django-多表操作-多个模块的关联-一对一的增删改查- models.onetoone()

时间:2024-07-09 22:30:58浏览次数:14  
标签:IDCard 多表 onetoone 16 models idcard 一对一 print import

一对一不是数据库的一个连表操作、而是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),
]

 

标签:IDCard,多表,onetoone,16,models,idcard,一对一,print,import
From: https://www.cnblogs.com/littlecc/p/18125161

相关文章

  • 15、 Django-多表操作-多个模块的关联-多对多的增删改查- models.manytomany()
    针对多对多的关系django会自动创建第三张表、也可以通过through参数指定第三张表 models.pyfromdjango.dbimportmodels#Createyourmodelshere.#多对多#用户表:电影=N:M#一个用户可以收藏多部电影#一部电影可以被不同的用户收藏#电影classMovie(models.M......
  • 14、 Django-多表操作-多个模块的关联-一对多的增删改查- models.ForeignKey()
    #多模块关联--关联分类:Django中的三个函数--ForeignKey-称为外键:一对多、将字段定义在多的一端中--ManyToMnayField:多对多、将字段定义在两端的任意一端中--OneToOneField:一对一、将字段定义在任意一端中 如:一对一:一对多:多对多:常用......
  • springboot非物质文化遗产管理系统-计算机毕业设计源码16087
    目录摘要1绪论1.1选题背景与意义1.2国内外研究现状1.3论文结构与章节安排2系统分析2.1可行性分析2.2系统流程分析2.2.1系统开发流程2.2.2用户登录流程2.2.3系统操作流程2.2.4添加信息流程2.2.5修改信息流程2.2.6删除信息流程2.3 系统......
  • 6. DQL-多表查询
        本小节主要讲解数据库的多表查询功能,可实现从多个表中查询数据,多表查询内容包括内连接,外连接,笛卡尔积,等值连接,非等值连接,SQL99标准链接语法以及联合查询。6.1.1多表查询的介绍从多个表中获取数据思考如下问题?写一条查询语句,查询员工姓名、部门名称、工作地点? ......
  • not_the_same_3dsctf_2016
    not_the_same_3dsctf_2016查看保护就不说了IDA反编译发现为静态编译,不用找libc了这点节省不少功夫。打开main函数,发现栈溢出漏洞偏移为45,这个是根据gdb的cyclic算出来的发现后门函数get_secret,功能是把flag读取赋值给fl4g初步思路为通过栈溢出,调用get_secret,再通过write函......
  • 016 The System.Console class
    示例usingSystem;classSample{  staticvoidMain()  {    Console.WriteLine("Welcome");    Console.WriteLine("to");    Console.WriteLine("C#Programming");    Console.Write("Welcome"); ......
  • ESP32S3 N16R8, USB_STREAM UVC调试记录
    win10,vscode,idf-5.2.1,usb_stream开发板:酷世Audio800*480开发板,NT53310+GT911参考phripherals/lcd/i80-controller与usb/host/usb_camera_lcd_display编写程序出现报错:I(11034)USB_STREAM:ENUMStageSTART,SucceedI(11044)USB_STREAM:ENUMStageGET_SHORT_DE......
  • [email protected](52)[email protected](1)- 核心概念
    目录1,MVC2,前端MVC的困难3,Flux4,Redux1,MVC是一个解决方案,用于降低UI和数据关联的复杂度。在早期前后端未做分离时,服务端会响应一个完整的HTML,包含页面需要的所有数据。而浏览器仅承担渲染页面的作用,整体流程也就是服务端渲染。其中服务端的处理流程:处理请求,并将......
  • P0916VB 触点输入模块
    型号:P0916VB类别:触点输入模块成色:全新,非全新质保:一年P0916VB触点输入模块的工作原理基于触点信号的检测与转换。当外部设备的触点闭合或断开时,会产生相应的电信号变化。触点输入模块通过内部的电路设计,能够检测到这种电信号的变化,并将其转换为控制系......
  • SPI驱动--TM1628
     /*********************************************************************************@fileGPIO_Toggle\main.c*@authorMCDApplicationTeam*@versionV2.0.1*@date18-November-2011*@briefThisfilecontainsthemainfuncti......