分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 代码编程

Django ORM OneToOneField

发布时间:2023-09-06 01:17责任编辑:沈小雨关键词:暂无标签

一对一关系

一对一关系与多对一关系非常相似。如果你在模型中定义一个OneToOneField,该模型的实例将可以通过该模型的一个简单属性访问关联的模型。

class Person(models.Model): ???name = models.CharField(max_length=20)class PersonDetail(models.Model): ???age = models.IntegerField(10) ???email = models.EmailField()
  # person = models.ForeignKey(Person, unique=True) ?
  person = models.OneToOneField(Person)

二、 查询

def one(request): ???# 前向查询 ???ret = models.PersonDetail.objects.get(id=1) ???# 这里的person是表中的关联外键的字段并非类名字 ???print(ret.person) ?# Person object 封装的Person对象 ???print(ret.person.name) ???# 反向查询 ???obj = models.Person.objects.get(id=1) ???# persondetail 类名字的小写 ???print(obj.persondetail) ?# PersonDetail object ???print(obj.persondetail.email, obj.persondetail.age) ???return HttpResponse(‘OK‘)

“反向”查询中有所不同。一对一关系中的关联模型同样具有一个管理器对象,但是该管理器表示一个单一的对象而不是对象的集合。

一对一的方式原理上是  ForeignKey + unique=True。但是既然是外键 那么一对多的反向查询方式应该和一对一的反向查询方式相同,而实际上不是这样的,一对一的反向查询方式是 obj.persondetail   对象.类名小写 ,没有_set。 

Django ORM OneToOneField

原文地址:http://www.cnblogs.com/liyqiang/p/7662800.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved