python一对一_Python - Django - ORM 一对一表结构
當一張表的某一些字段查詢的比較頻繁,另外一些字段查詢的不是特別頻繁,可以把不怎么常用的字段 單獨拿出來做成一張表,然后用一對一的表關聯起來
這樣既保證數據都完整的保存下來,又能保證檢索更快
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 "".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 表下的字段
總結
以上是生活随笔為你收集整理的python一对一_Python - Django - ORM 一对一表结构的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: MySQL查询的方法_MYSQL 查询方
- 下一篇: git idea 本地历史版本回滚_如何
