首页 > 其他分享 >自定义中间表(中介模型)

自定义中间表(中介模型)

时间:2023-12-21 20:56:18浏览次数:39  
标签:__ 自定义 models 模型 中介 objects book nid id

1 多对多关系中,第三张表的建立
-默认使用ManyToMany,自动创建
-使用中介模型
-即手动创建第三张表,又要使用好用的查询
-完全自己写第三张表

# 使用中介模型

class Author(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
age = models.IntegerField()
author_detail = models.OneToOneField(to='AuthorDatail', to_field='nid', unique=True, on_delete=models.CASCADE)


class AuthorDatail(models.Model):
nid = models.AutoField(primary_key=True)
telephone = models.BigIntegerField()
birthday = models.DateField()
addr = models.CharField(max_length=64)


class Book(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
price = models.DecimalField(max_digits=5, decimal_places=2)
publish_date = models.DateField()

publish = models.ForeignKey(to='Publish', to_field='nid', on_delete=models.CASCADE)
# 当前在哪个表中,元组中的第一个参数就是 表明_id
authors=models.ManyToManyField(to='Author',through='AuthorToBook',through_fields=('book_id','author_id'))
def __str__(self):
return self.name


class Publish(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32)
city = models.CharField(max_length=32)
email = models.EmailField()


class AuthorToBook(models.Model):
nid = models.AutoField(primary_key=True)
book_id = models.ForeignKey(to=Book, to_field='nid', on_delete=models.CASCADE)
author_id = models.ForeignKey(to=Author, to_field='nid', on_delete=models.CASCADE)
date=models.DecimalField()

 


# s1.py

import os

if __name__ == '__main__':
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "day76.settings")
import django
django.setup()
from app01 import models

 

# 西游记这本书是lqz和egon写的
# book=models.Book.objects.get(pk=1)
# # book.authors.add(1,2) # 用不了了
# # 只能手动写
# models.AuthorToBook.objects.create(book_id_id=1,author_id_id=1)
# models.AuthorToBook.objects.create(book_id_id=1,author_id_id=2)

# 西游记这本书所有的作者

# book = models.Book.objects.get(pk=1)
# res=models.AuthorToBook.objects.filter(book_id=book)
# print(res)

# book = models.Book.objects.get(pk=1)
# print(book.authors.all())

# 西游记这本书是lqz和egon写的 add ,remove, clear,set
# 但是连表操作,book.authors这些都能用
book = models.Book.objects.get(pk=1)
book.authors.add(1,2) # 不能用了

标签:__,自定义,models,模型,中介,objects,book,nid,id
From: https://www.cnblogs.com/97zs/p/17920090.html

相关文章

  • 直播预告 | 大模型时代,“应用变了”:政务办公,如何从大模型中巧借力?
    医疗健康,直播娱乐,聊天工具,通勤支付应用融入了我们生活的方方面面。协同办公应用,因具有丰富的文书理解、会议总结、对话摘要等人机交互需求,成为大模型落地产业的最佳应用场景之一而相较普通办公场景政务场景下的协同办公对模型训练、部署、使用提出了更严谨的要求12月22日(本周......
  • 大语言模型说明书
    在浩瀚的信息宇宙中,大语言模型如同一颗璀璨的星星正在熠熠生辉。21世纪以来,人工智能可谓是飞速发展,从简单的神经网络到大语言模型、生成式AI,这并非仅仅是一种技术的进步,更是人类智慧的飞跃。大语言模型不仅仅是语言的演化,更是一段充满创新和探索的史诗。就和我一起踏上这场穿越知识......
  • WPF自定义控件之图形解锁控件 ScreenUnLock
    ScreenUnLock与智能手机上的图案解锁功能一样。通过绘制图形达到解锁或记忆图形的目的。本人突发奇想,把手机上的图形解锁功能移植到WPF中。也应用到了公司的项目中。在创建ScreenUnLock之前,先来分析一下图形解锁的实现思路。1.创建九宫格原点(或更多格子),每个点定义一个坐标值......
  • Pytorch模型结构修改
    1.Var方差在pytorch中的差别:tlist=input.tolist()print(input)print(np.mean(tlist),np.var(tlist))print(torch.mean(input),torch.var(input))可以看到numpy与torch求出来的**Var**与**Mean**有差别原因:如下图为torch.var官网描述,其中存在一个矫正correctio......
  • 基于vue3和elementplus实现的自定义table组件
    基于vue3和elementplus实现的自定义table组件,集成查询工具栏分页,可通过配置直接实现基础的列表页基于vue3和elementplus实现的自定义table组件,集成查询工具栏分页,可通过配置直接实现基础的列表页目录结构如下:类型声明:declaretypeDictType={value:string|boolean|n......
  • OSI七层模型如何帮助网络通信?
    OSI(开放系统互联)七层模型是计算机网络体系结构的一种描述方式,它为不同系统之间的通信提供了统一的标准。这个模型从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。以下是每个层次的主要功能和它们如何帮助网络通信:物理层(PhysicalLayer):这一层主要负......
  • OSI七层模型如何帮助网络通信?
    OSI(开放系统互联)七层模型是计算机网络体系结构的一种描述方式,它为不同系统之间的通信提供了统一的标准。这个模型从低到高分别是:物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。以下是每个层次的主要功能和它们如何帮助网络通信:物理层(PhysicalLayer):这一层主要负责......
  • 3D模型如何制作透明玻璃材质
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎1、什么是玻璃材质在3D建模和渲染中,玻璃是一种非常常见的材质。它的特点是可以......
  • 大模型微调方法总结:LoRA、Adapter、Prefix-tuning、P-tuning、Prompt-tuning
    随着深度学习技术的不断发展,大型预训练模型已成为许多任务的重要工具。然而,微调(finetuning)这些大模型以适应特定任务是一个复杂且计算密集型的过程。本文将重点介绍五种不同的微调方法:LoRA、Adapter、Prefix-tuning、P-tuning和Prompt-tuning,并对它们进行总结。LoRA(LearnedRepre......
  • 「大模型摇摇乐」狂欢落幕!盘点那些让你意想不到的应用集锦
    大模型开发不只是枯燥的、墨守成规的,还可以是新鲜刺激的、充满创意火花的!两百多位开发者加入「大模型摇摇乐」,共同享受大模型带来的乐趣!活动详情「大模型摇摇乐」百度飞桨&文心大模型主办,该活动是面向全球AI爱好者的趣味活动,旨在激发开发者的创新意识,提升开发者人工智能创新实践应......