一对一的关系

一、主要用途

一对一的关系主要用途是针对表的扩展,主要用于数据库的分表,把不常用的数据存放到一张表中,常用的存放到一张表中

比如:用户表(用户基本信息:姓名,手机号码...)及用户扩展表(年龄,性别...)

二、创建数据模型

  • 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
    

results matching ""

    No results matching ""