ORM多表操作(object与queryset)
Posted believepd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ORM多表操作(object与queryset)相关的知识,希望对你有一定的参考价值。
ORM多表操作
一、创建模型
作者模型:一个作者有姓名和年龄。
作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息;作者详情模型和作者模型之间是一对一的关系。
出版商模型:出版商有名称,所在城市以及邮箱。
书籍模型: 书籍有书名和出版日期,一本书可能会有多个作者,一个作者也可以写多本书,所以作者和书籍的关系就是多对多的关联关系;一本书只应该由一个出版商出版,所以出版商和书籍是一对多关联关系。
from django.db import models class Author(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() # on_delete=models.CASCADE 当删除关联表中的数据时,与之关联也删除 authorDetail = models.OneToOneField(to="AuthorDetail", on_delete=models.CASCADE) class AuthorDetail(models.Model): id = models.AutoField(primary_key=True) birthday = models.DateField() telephone = models.BigIntegerField() address = models.CharField(max_length=64) class Publisher(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=32) city = models.CharField(max_length=32) email = models.EmailField() class Book(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(max_length=32) publishDate = models.DateField() price = models.DecimalField(max_digits=5, decimal_places=2) # 与Publish建立一对多的关系,外键字段一般建立在多的一方 publisher = models.ForeignKey(to="Publisher", to_field="id", on_delete=models.CASCADE) # 与Author表建立多对多的关系,ManyToManyField通常设置在正向查询多的那一边,自动创建第三张表 authors = models.ManyToManyField(to="Author")
二、插入测试数据
1
以上是关于ORM多表操作(object与queryset)的主要内容,如果未能解决你的问题,请参考以下文章