Django--orm--关系字段(一对一)

一对一的关联关系多用在当一张表的不同字段查询频次差距过大的情况下,将本可以存储在一张表的字段拆开放置在两张表中,然后将两张表建立一对一的关联关系。
字段:OneToOneField
字段参数
to:设置要关联的表。
to_field:设置要关联的字段。
on_delete: 同ForeignKey字段。

(9)增
使用 save() 、create() 方法。(常规操作)
idCard_obj = models.IdCard()
idCard_obj.num = ‘119’
idCard_obj.address = ‘火警’
idCard_obj.gender = ‘男’
idCard_obj.save()
models.Person.objects.create(
name=‘王五’,
age=12,
idCard=idCard_obj
)

(10)删
delete()方法(两个表格中的记录都需要手动删除,on_delete 失效)
person_obj = models.Person.objects.get(name=‘王五’)
models.IdCard.objects.get(person=person_obj).delete()
person_obj.delete()
(11)改
使用save()方法,(不管是正向还是反向都先获取对象然后save())
person_obj = models.Person.objects.get(name=‘张三’)
#print(person_obj.idCard)
idCard_obj = person_obj.idCard
idCard_obj.num = ‘1234’
idCard_obj.save()
(12)查
反向查询时,只需要使用类名小写即可。
正向查询:
(1). 查询 张三的地址
# person_obj = models.Person.objects.get(name=‘张三’)
# # print(person_obj.idCard) # 返回对象 IdCard object (1)
#print(person_obj.idCard.address) # 公安局
反向查询:
(2).查询身份证号是110 的用户
idCard_obj = models.IdCard.objects.get(num=‘110’)
print(idCard_obj.person) #返回对象 Person object (1)
print(idCard_obj.person.name) # 张三
#提示只需要使用类名小写即可

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值