引子:
目前主要做测试工作,好久没碰过django的orm了,今天有空了,复习一下
代码:
models.py
from django.db import models # Create your models here. class Publisher(models.Model): id=models.AutoField(primary_key=True) name=models.CharField(max_length=32) class Book(models.Model): id=models.AutoField(primary_key=True) title=models.CharField(max_length=32) # 外键 一对一 出版社和 书 publisher=models.ForeignKey(to="Publisher") class Author(models.Model): id=models.AutoField(primary_key=True) name=models.CharField(max_length=32) # 外键 多对多 作者和书 books=models.ManyToManyField(to="Book")
views.py
import os,django os.environ.setdefault("DJANGO_SETTINGS_MODULE","day_orm.settings") django.setup() from django.shortcuts import render # Create your views here. from app01 import models def orm_apply(request): """ 复习 orm 增删改查 建表命令 python3 manage.py makemigrations python3 manage.py migrate :param request: :return: """ # 增加 models.Publisher.objects.create(name="青龙") # 查 使用get 一般 知道目标数据是唯一的 如果有多条 默认返回第一条 models.Publisher.objects.get(id=1) models.Publisher.objects.get(name="青龙") # 删除 obj=models.Publisher.objects.get(id=1).delete() #修改 orm_obj=models.Publisher.objects.get(id=2) orm_obj.name="白虎22" orm_obj.save() def orm_forkey(request): """ 复习 外键的增删改查 :param request: :return: """ # 增删改同上 # 查 book_obj=models.Book.objects.get(id=1) # publisher_obj拿到的是 和书 关联的 Publisher的对象 publisher_obj=book_obj.publisher # 第一种拿到 publisher_id 的方法 publisher_id_1=publisher_obj.id publisher_name = publisher_obj.name # 第二种拿到 publisher_id 的方法 # 在数据库中 实际生成的 数据 并没有publisher_id 这是因为 # 在Book类中 publisher=models.ForeignKey(to="Publisher") 判断如果是外间 就会生成一个publisher_id publisher_id_2=book_obj.publisher_id # 多对多关系 # books=models.ManyToManyField(to="Book") 在数据库中 orm 会自动创建第三张表 进行关联 # author_obj=models.Author.objects.get(id=1) author_obj.books.all() # 拿到了 所有的 和作者关联的 书的对象 # 给作者绑定多本书 author_obj.books.set([1,2,3]) # 书的主键id # def attr_local(): """ locals globals 通常配合 反射使用 :return: """ # locals 返回当前 作用域 局部变量 dict print(locals()) # globals 返回当前模块 所有变量 dict print(globals()) if __name__ == ‘__main__‘: print(attr_local()) #print(locals())
原文:https://www.cnblogs.com/yuan-x/p/14257136.html