一对一的关系
一、主要用途
一对一的关系主要用途是针对表的扩展,主要用于数据库的分表,把不常用的数据存放到一张表中,常用的存放到一张表中
比如:用户表(用户基本信息:姓名,手机号码...)及用户扩展表(年龄,性别...)
二、创建数据模型
1、用户表
class UserModel(models.Model): """ 用户表 """ name = models.CharField(max_length=10, default='', verbose_name='用户') def __str__(self): return self.name class Meta(object): verbose_name = '用户表' verbose_name_plural = verbose_name
2、用户扩展表
class UserExtModel(models.Model): """ 用户扩展表 """ user = models.OneToOneField(to='UserModel', on_delete=models.CASCADE, verbose_name='关联用户') mobile = models.CharField(max_length=11, verbose_name='手机号码') def __str__(self): return self.user class Meta(object): verbose_name = '用户扩展表' verbose_name_plural = verbose_name
3、新增数据
models.UserModel.objects.create(name='张三') models.UserModel.objects.create(name='李四') models.UserModel.objects.create(name='王五') models.UserExtModel.objects.create(user=models.UserModel.objects.get(pk=1), mobile='120') models.UserExtModel.objects.create(user=models.UserModel.objects.get(pk=2), mobile='120') models.UserExtModel.objects.create(user=models.UserModel.objects.get(pk=3), mobile='140')
4、查询数据
res = models.UserModel.objects.get(pk=1).userextmodel.mobile