首页 > 数据库技术 > 详细

Django2.2 Mysql数据表一对一映射(字段绑定) --Model拓展学习笔记shen

时间:2019-12-15 13:20:58      阅读:79      评论:0      收藏:0      [点我收藏+]

我:本次继上次的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(rhello/,views.hello,name=hello),
    #一对一项目实例

    path(raddperson/,views.add_person,name=add_person),
    path(raddidcard/,views.add_idcard,name=add_idcard),
    path(rbindcard/,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拓展

Django2.2 Mysql数据表一对一映射(字段绑定) --Model拓展学习笔记shen

原文:https://www.cnblogs.com/cybg/p/12043633.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!