django一对一关系物理外键

本文详细介绍了在Django框架中如何实现一对一模型关系,包括创建学员和学员详情模型,以及如何进行添加、查询和删除操作。通过实例演示了一对一关系在实际应用中的具体实现。

首先创建,之后对其进行操作

一对一,即一个表中的 “一条” 数据,仅对应另一个表中的 “一条” 数据

# 创建学员模型
class Stu(models.Model):
    sname = models.CharField(max_length=6)
    age = models.IntegerField()

#创建学员详情模型
#注意表的先后顺序,或者在OneToOneField(“stu”)加引号
class StuInfo(models.Model):
    jiguan = models.CharField(max_length=10)
    xueli = models.CharField(max_length=10)
	'''
    第一个参数:是被关联的模型名称
    第二个参数:当关联表中的一条数据被删除的时候,与之对应的详情表数据也会被删除
   	OneToOneField()是一对一关系的方法  Stu是关联的那一个表 on_delete表示删除时的关联
    '''
    uid = models.OneToOneField(Stu, on_delete=models.CASCADE)


一对一模板的操作


# 创建视图函数 演示 一对一模型关系的操作
def onetoone(request):
    
    # 添加的俩种方式
        # 创建学员信息
        ob = Stu(sname='李四',age=24)
        ob.save()

        # 添加学员详情信息
        obi = StuInfo()
        obi.jiguan = '山西'
        obi.xueli = '本科'
        # 注意,在给外键添加数据时,只能选择对象,不能设为对象的id
        obi.uid = ob
        obi.save()

    # 查询
    # 通过学员 获取学员详情 
        ob = Stu.objects.first()
        # print(ob.sname)
        # print(ob.stuinfo) # 通过学员对象获取与之关联的 学员详情 对象
        # print(ob.stuinfo.xueli) 


    # 通过学员详情,获取学员信息
        # ob = StuInfo.objects.last()
        # print(ob.jiguan)
        # print(ob.uid) # 通过学员详情对象 获取与之关联的 学员 对象
        # 获取info详情表,通过外键链接另一个表的字段,如下
        # print(ob.uid.sname)


    # 删除
    # ob = Stu.objects.first()
    # ob.delete()

    return HttpResponse('演示 一对一模型关系的操作')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值