django一对一表

一对一

例子:
用户表(母表):
id    name   age   
1     zekai   18

薪水表(子表):
id    money   us_id
 1      2000     1   (只能出现一次)

class UserInfo(models.Model):
	name = models.CharField(max_length=32)
	age = models.CharField(max_length=32)
	

class Salary(models.Model):
	money = models.CharField(max_length=32)
	us = models.OneToOneField("UserInfo")


对一对一表的增删改查:
# 增    和普通一样
    models.StaffInfo.objects.create(name="xxx", age=12)
    models.Salary.objects.create(money=3000, staff_id=2)
# 一对一关联的外键如果添加重复会报错,也就是说django已经帮我们做好了唯一索引

# 删   和普通的也是一样的
    models.Salary.objects.filter(staff_id=2).delete()
# 也有级联删除的问题, 可以通过on_delete 修改值取消级联删除

# 改   和普通也一样
    models.Salary.objects.filter(staff_id=2).update(money=2000)

# 查   分为正查和反差两种
    # 正查    通过点表中外键名跨表查询  row.staff.name
        res = models.Salary.objects.all()
        for row in res:
            print(row.money, row.staff.name)
    # 反差    点关联表的表明小写进行跨表查询  row.salary.money
        res = models.StaffInfo.objects.all()
        for row in res:
            print(row.name, row.salary.money)

  

猜你喜欢

转载自www.cnblogs.com/wangwei5979/p/11203792.html
今日推荐