zoukankan      html  css  js  c++  java
  • 058:表关系之一对一

    表关系之一对一应用场景:

      比如一个用户表和一个用户信息表。在实际网站中,可能需要保存用户的许多信息,但是有些信息是不经常用的。如果把所有信息都存放到一张表中可能会影响查询效率,因此可以把用户的一些不常用的信息存放到另外一张表中我们叫做UserInfo。但是用户表User和用户信息表UserInfo就是典型的一对一了。

    实例代码如下:

    # models.py文件内容:
    class User(models.Model):
        username = models.CharField(max_length=100)
    
        def __str__(self):
            return "<User: ID:%s, username:%s>" % (self.id, self.username)
    
    class UserInfo(models.Model):
        addr = models.CharField(max_length=200)
        user = models.OneToOneField("User", on_delete=models.CASCADE)
    
        def __str__(self):
            return "<UserInfo: ID:%s, addr:%s, user_id:%s>" % (self.id, self.addr, self.user.id)    # 注意这里的数据库中user_id的书写格式
    
    # views.py文件内容:
    def index(request):
        user = User.objects.first()
        # userinfo = UserInfo(addr="nanjing")
        # userinfo.user = user
        # userinfo.save()
        print(user.userinfo)               # 通过User模型获取UserInfo模型中的数据
        return HttpResponse("success")

    如果不想使用通过User模型获取UserInfo模型中的数据,可以使用上节中的方式;实例代码如下:

    # models.py文件内容:
    class User(models.Model):
        username = models.CharField(max_length=100)
        def __str__(self):
            return "<User: ID:%s, username:%s>" % (self.id, self.username)
    
    class UserInfo(models.Model):
        addr = models.CharField(max_length=200)
        user = models.OneToOneField("User", on_delete=models.CASCADE, related_name="information")
        def __str__(self):
            return "<UserInfo: ID:%s, addr:%s, user_id:%s>" % (self.id, self.addr, self.user.id)
    
    # views.py文件内容:
    def index(request):
        user = User.objects.first()
        # userinfo = UserInfo(addr="nanjing")
        # userinfo.user = user
        # userinfo.save()
        # print(user.userinfo)
        print(user.information)                 # 这里的information和上面模型中的related_name="information"要对应
      return HttpResponse("success")
  • 相关阅读:
    我的未来。
    我的的第一篇博客
    从软件工程角度回顾本科毕业论文
    从高级软件工程角度分析毕业设计-小结-盛超
    从软件工程视角,回顾分析本科毕业设计软件中存在的不足问题
    从软件工程的角度分析本科毕业设计
    从高级软件工程角度分析本科毕业设计
    从软件工程的视角,回顾本科毕业设计,探视设计中存在的不足
    用软件工程思想看毕业设计
    从软件工程角度分析毕业设计
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/10227336.html
Copyright © 2011-2022 走看看