zoukankan      html  css  js  c++  java
  • Django2.2 Mysql数据表一对一映射(字段绑定) --Model拓展学习笔记shen

    我:本次继上次的Model继续延伸一下数据表之间的一对一映射关系

    访客:有什么用?

    我:众所周知,一张数据表的字段太多会显得冗余、杂乱,那么就需要将一张表进行拆分成多个表,这样不会太杂乱,也比较好维护

    举例:每个人都有一张身份证,有且唯一一张,这里就存在一个   一对一的关系

    一、Model建立

    #一对一的模型实例:
    class Person(models.Model):
        p_name=models.CharField(max_length=16)
        p_sex=models.BooleanField(default=False)
    
    class IDCard(models.Model):
        id_num=models.CharField(max_length=18,unique=True)
        #一对一
        id_person=models.OneToOneField(Person,on_donelete=models.CASCADE,null=True,blank=True)

    这里有两点需要注意,

    1.OneToOneField(映射的模型,Django2.X之后要加上的on_donelete属性
    2.id_num-----------unique=True

    二、路由的设定:

    from django.urls import path
    
    from App1 import views
    
    urlpatterns=[
        path(r'hello/',views.hello,name='hello'),
        #一对一项目实例
    
        path(r'addperson/',views.add_person,name='add_person'),
        path(r'addidcard/',views.add_idcard,name='add_idcard'),
        path(r'bindcard/',views.bind_card,name='bind_card'),
    ]

    分别为:

    • 添加人员信息
    • 添加身份证信息
    • 绑定身份证

    三、View的构造:

    #一对一实例
    #添加人
    def add_person(request):
        username=request.GET.get("username")
    
        person =Person()
        person.p_name=username
        person.save()
    
        return HttpResponse("Person创建成功!%d"% person.id)
    
    #添加身份证
    def add_idcard(request):
        idnum=request.GET.get("idnum")
    
        idcard=IDCard()
    
        idcard.id_num=idnum
        idcard.save()
    
        return HttpResponse("IDCard %d"% idcard.id)
    
    
    def bind_card(request):
    
        person =Person.objects.last()
    
        idcard=IDCard.objects.last()
    
        idcard.id_person=person
        idcard.save()
    
        return HttpResponse("绑定成功!")

    结果如下(大家感兴趣的也可以试试)

     下期继续更新Model拓展

  • 相关阅读:
    sdut 2413:n a^o7 !(第三届山东省省赛原题,水题,字符串处理)
    poj 2406:Power Strings(KMP算法,next[]数组的理解)
    hrbustoj 1551:基础数据结构——字符串2 病毒II(字符串匹配,BM算法练习)
    hrbustoj 1179:下山(DFS+剪枝)
    [Linux] 通过指令修改时区 tzselect
    Ubuntu 历史版本下载
    RK3288 USB UVC camera 摄像头 VIDIOC_DQBUF Failed!!! err[I/O error]
    Android Activity活动状态及生存周期
    Android 系统四大组件
    Android JNI访问Java成员
  • 原文地址:https://www.cnblogs.com/cybg/p/12043633.html
Copyright © 2011-2022 走看看