一、数据准备
1、创建应用books
2、setting.py
中注册应用
3、定义模型类
from django.db import models # Create your models here. # 定义图书模型类Book class Book(models.Model): title = models.CharField(max_length=20, verbose_name='图书名称') read = models.IntegerField(default=0, verbose_name='阅读量') comment = models.IntegerField(default=0, verbose_name='评论量') def __str__(self): return self.title class Meta: db_table = 't_book' # 定义人物表 Person class Person(models.Model): name = models.CharField(max_length=20, verbose_name='人物姓名') gender = models.BooleanField(default=True, verbose_name='性别') book = models.ForeignKey(Book, verbose_name='所属图书', on_delete=models.CASCADE) def __str__(self): return self.name class Meta: db_table = 't_person'
4、激活模型
-
生成迁移:
python manage.py makemigrations
-
执行迁移:
python manage.py migrate
5、Admin注册
6、数据准备
登录Admin后台添加一些测试数据
二、通过对象执行关联查询
标签:__,Django,name,models,模型,查询,book,关联 From: https://www.cnblogs.com/Durant0420/p/18369330由一到多的访问语法:
# 一对应的模型类对象.多对应的模型类名小写_set # 查询编号为1的图书。 book=Book.objects.get(id=1) # 获得book图书的所有人物。 book.person_set.all()由多到一的访问语法:
#多对应的模型类对象.多对应的模型类中的关系类属性名 p = Person.objects.get(id=1) p.book访问一对应的模型类关联对象的id语法:
#多对应的模型类对象.关联类属性_id p = Person.objects.get(id=1) p.book_id三、通过模型类实现关联查询
由一模型类条件查询多模型类数据:
语法如下:
关联模型类名小写__属性名__条件运算符=值如果没有"__运算符"部分,表示等于,结果和sql中的inner join相同
# 查询图书,要求图书中人物的描述包含'宝'。 list = Book.objects.filter(person__name__contains='宝')由多模型类条件查询一模型类数据:
语法如下:
一模型类关联属性名__一模型类属性名__条件运算符=值# 查询书名为“天龙八部”的所有人物。 list = Person.objects.filter(book__title='天龙八部')