多表操作——添加
以Book表、Author表、Publish(出版社)表为例
外键建在多的一方
class Book(models.Model):
name=models.charField(max_length=20)
publish=models.ForeignKey("Publish") #django会默认在数据库中的外键加个_id
class Publish(models.Model):
name=models.CharField(max_length=100)
class Author(models.Model):
name=modles.CharField(max_length=40)
执行python manage.py makemigrations创建数据库
多表操作(一对多)
1、添加
def addbook():
Book.objects.create(name="python",publish_id=2)
return HttpResponse("添加成功")
2、对publish直接赋值,publish后面跟一个对象
publish_id=Publish.objects.filter(name="昆明出版社")[0]
Book.objects.create(name="python",publish_id=publish_id)
3、多表添加(多对多)
书本和作者表(多对多)
models.py中代码如下:
(1)例如:书本名称为天涯明月刀,作者为古龙、倪匡
首先从book表中查询出天涯明月刀这本书,从作者表种查找出古龙和倪匡两位作者,执行book.author.add()
代码如下(查找出的数据都只能有一条,用get):
def addduo_duo(request):
book_1=Book.objects.get(name="天涯明月刀")
author1=Author.objects.get(name="古龙")
author2=Author.objects.get(name="倪匡")
book_1.author.add(author1,author2)
return HttpResponse("添加成功")
添加成功以后数据库中的数据如下所示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通