当一张表的某一些字段查询的比较频繁,另外一些字段查询的不是特别频繁,可以把不怎么常用的字段 单独拿出来做成一张表,然后用一对一的表关联起来

这样既保证数据都完整的保存下来,又能保证检索更快

models.py:

from django.db import models

# 作者
class Author(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=16, null=False, unique=True)
book = models.ManyToManyField(to="Book")
info = models.OneToOneField(to="AuthorInfo", null=True) # 一对一关联 AuthorInfo 表 def __str__(self):
return "<Author object: {}>".format(self.name) # 作者信息
class AuthorInfo(models.Model):
phone = models.IntegerField()
addr = models.CharField(max_length=32)

运行命令,查看数据库

先在 authorinfo 表中添加数据

接下来在 author 表中添加数据

这里 info_id 中有两个 1,所以出错了。一对一的表一个 id 只能对应一个 id

修改后:

注意:

刚才 John 那行数据因为 info_id 重复而执行失败,数据更新了 Jack、Sum,所以要刷新一下再添加

一对一查询:

orm.py:

import os

if __name__ == '__main__':
# 加载 Django 项目的配置信息
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite2.settings")
# 导入 Django,并启动 Django 项目
import django
django.setup() from app01 import models # 一对一的查询
author_obj = models.Author.objects.get(id=3)
author_info = author_obj.info # 通过 info 字段获取相应的 AuthorInfo 对象
print(author_info)
print(author_info.phone, author_info.addr)

运行结果:

AuthorInfo 表下的 phone、addr 字段,也相当于是 Author 表下的字段

最新文章

  1. 黑马程序员——【Java高新技术】——类加载器
  2. C#之GDI+
  3. 数往知来 JavaScript&lt;十三&gt;
  4. Eclipse和Android Studio中的DDMS使用时什么不同?
  5. jQuery插件的编写和使用 &lt;思维导图&gt;
  6. Simple Arithmetics
  7. C#网络编程简单实现通信小例子-2
  8. 【剑指Offer学习】【面试题19 :二叉树的镜像】
  9. 百度统计js被劫持用来DDOS Github的JS注释
  10. android避免service被杀
  11. Uva - 11419 - SAM I AM
  12. 嵌入式linux------ffmpeg移植 编码H264(am335x编码H264)
  13. Unity UGUI图文混排源码(一)
  14. 为自己搭建一个分布式 IM 系统二【从查找算法聊起】
  15. Ubuntu Desktop: 备份与还原
  16. 20165235 祁瑛 2018-4 《Java程序设计》第八周学习总结
  17. 003.SSH密钥对登陆
  18. quick3.3final版创建项目报错解决
  19. gulp 搭建个人工作流:文件注入、热启动、跨域
  20. MVC MVVM和传统三层的理解

热门文章

  1. Linux命令基础4-cat命令
  2. dedecms织梦第三方登录插件-QQ登录、微博登录、微信登录
  3. (三)IDEA使用,功能面板
  4. 讲心情 demo1
  5. RS译码的描述
  6. Windows系统清除占用的串口号列表批处理
  7. npropress进度条插件的使用
  8. LeetCode之打家劫舍
  9. [CMS]Joomla 3.4.6-RCE漏洞复现
  10. redis-migrate-tool