ORM中一对一在当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁,那么就把不常用的字段单独拿出来做成一张表,然后通过一对一进行关联起来。举个例子:在我们登录某个账户的时候,一般会显示用户名,头像,而没有显示年龄,兴趣爱好,只有当点击用户详细信息的时候才显示这些年龄,兴趣爱好,所以一般将用户名,头像等作为用户表,而年龄,兴趣爱好就作为用户详细表。
一对一的优势:既保证数据都完整的保存下来,又能保证大部分的检索更快
ORM中一对一的用法:OneToOneField(to="表名")
模型类:
class Student(models.Model): """ 学生表 """ id=models.AutoField(primary_key=True) name=models.CharField(max_length=10) pwd=models.CharField(max_length=30) detail_id=models.OneToOneField(to="StudentDetail") # 通过OneToOneField字段将StudentDetail表联系到一起 class StudentDetail(models.Model): """ 学生表详细信息 """ id=models.AutoField(primary_key=True) sex=models.CharField(max_length=2) hobby=models.CharField(max_length=50)
一对一查询
def one_to_one(requestt): """ 一对一查询步骤: 1.先获取某个用户object 2.然后通过object.一对一外键就获得了详细表的模型信息 3.可以通过拿到模型表信息再获取具体的数据 :param requestt: :return: """ get_user=models.Student.objects.get(id=7) get_userdetail=get_user.detail_id print(type(get_userdetail)) print(get_userdetail) return HttpResponse("ok")