完美解决 新增的时候级联保存 相关的对象

本文介绍了一种在实体关系中初始化关联实体的方法,并通过具体代码示例展示了如何设置关联实体的ID,在开始会话并持久化实体的过程中进行关联。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先多对的一方的PO中一定要注意 要初始化 关联的一方

 @ManyToOne
 //@JoinColumn(name = "customer_id")不加也会自动生成的
 private Customer customer = new Customer();

 

然后在前台拿到CUSTOMER的ID以后

 

 Items it = new Items();
  
  it.getCustomer().setId(1);
  
  tx.begin();
  session.persist(it);
  tx.commit();

本关任务:学习 Django 增加数据。 相关知识 为了完成本关任务,你需要掌握: 1.Django 新增数据。 Django 新增数据 在 Django ORM 中进行数据新增是非常简单的一件事,因为 Django ORM 已经把 API 封装得非常完美,接下来让我们体验下它的美吧! 实例: DjangoProject/DjangoApp/models.py 文件代码如下: from django.db import models class Student(models.Model): # _id,stu_id,name # 自增主键 _id = models.AutoField(primary_key=True) # 自增主键 stu_id = models.IntegerField(verbose_name="学生id") name = models.CharField(max_length=20, verbose_name="学生姓名") 前提条件我们已经准备好了,接下来我们进入正题吧! DjangoProject/urls.py 文件代码: from django.contrib import admin from django.urls import path, include from DjangoApp import views urlpatterns = [ path('admin/', admin.site.urls), path('get_student/', views.get_student,name='get_student'), path('add_student/',views.add_student,name='add_student') ] DjangoProject/DjangoApp/views.py 文件代码: from django.http import HttpResponse from DjangoApp.models import Student def get_student(request): student_list = Student.objects.all().values() return HttpResponse(student_list) def add_student(request): stu = Student(id=4,stu_id=201904,name='张成明') stu.save() #stu = Student.objects.create(id=4,stu_id=201904,name='张成明') # 这种方式也可以 return redirect(reverse('get_student')) Django 删除数据 在 Django ORM 中进行数据删除是非常简单的一件事,因为 Django ORM 已经把 API 封装得非常完美,接下来让我们体验下它的美吧! 实例: DjangoProject/DjangoApp/models.py 文件代码如下: from django.db import models class Student(models.Model): # _id,stu_id,name # 自增主键 _id = models.AutoField(primary_key=True) # 自增主键 stu_id = models.IntegerField(verbose_name="学生id") name = models.CharField(max_length=20, verbose_name="学生姓名") 前提条件我们已经准备好了,接下来我们进入正题吧! 删除编号 _id 为 1 的学生。 DjangoProject/urls.py 文件代码: from django.contrib import admin from django.urls import path, include from DjangoApp import views urlpatterns = [ path('admin/', admin.site.urls), path('get_student/', views.get_student,name='get_student'), path('add_student/',views.add_student,name='add_student'), path('del_student/',views.del_student,name='del_student') ] DjangoProject/DjangoApp/views.py 文件代码: from django.shortcuts import render,redirect from django.http import HttpResponse from django.urls import reverse # Create your views here. from DjangoApp.models import Student def get_student(request): student_list = Student.objects.all().values() return HttpResponse(student_list) def add_student(request): student = Student.objects.create(_id=4,stu_id=201904,name="王城五") student.save() return redirect(reverse('get_student')) def del_student(request): student = Student.objects.filter(_id=1).first() student.delete() return redirect(reverse('get_student')) Django 修改数据 在 Django ORM 中进行数据修改操作是一个怎么样的使用流程呢? 实例: DjangoProject/DjangoApp/models.py 文件代码如下: from django.db import models class Student(models.Model): # _id,stu_id,name # 自增主键 _id = models.AutoField(primary_key=True) # 自增主键 stu_id = models.IntegerField(verbose_name="学生id") name = models.CharField(max_length=20, verbose_name="学生姓名") 前提条件我们已经准备好了,接下来我们进入正题吧! 修改 _id 为 2 的学生信息,修改内容为:name = "赵刚"。 DjangoProject/urls.py 文件代码: from django.contrib import admin from django.urls import path, include from DjangoApp import views urlpatterns = [ path('admin/', admin.site.urls), path('get_student/', views.get_student,name='get_student'), path('add_student/',views.add_student,name='add_student'), path('del_student/',views.del_student,name='del_student'), path('put_student/',views.put_student,name='put_student') ] DjangoProject/DjangoApp/views.py 文件代码: from django.shortcuts import render,redirect from django.http import HttpResponse from django.urls import reverse # Create your views here. from DjangoApp.models import Student def get_student(request): student_list = Student.objects.all().values() return HttpResponse(student_list) def add_student(request): student = Student.objects.create(_id=4,stu_id=201904,name="王城五") student.save() return redirect(reverse('get_student')) def del_student(request): student = Student.objects.filter(_id=1).first() student.delete() return redirect(reverse('get_student')) def put_student(request): student = Student.objects.filter(_id=2).first() student.name = '赵刚' student.save() return redirect(reverse('get_student')) 编程要求 根据提示,在右侧编辑器 Begin-End 区间中补充代码,完成以下任务: 新增一条数据: 新增数据为: 字段名 值 _id(int) 4 stu_id(int) 2019004 name(varchar) 王城五 删除一条数据: 需要删除的数据: 字段名 值 _id(int) 1 stu_id(int) 2019001 name(varchar) 王正 修改一条数据: 需要修改的数据: 字段名 值 _id(int) 2 stu_id(int) 2019002 name(varchar) 张长明 - 修改数据为: 字段名 值 _id(int) 2 stu_id(int) 2019002 name(varchar) 赵章民 平台说明: 在右侧编辑代码文件 Begin-End 区间中补充代码: 代码补充完成后点击评测按钮: 测试说明 任务完成后,点击评测按钮,平台会对你编写的代码进行测试,当你的结果与预期输出一致时,即为通过。 输出: {'_id': 1, 'stu_id': 2019001, 'name': '王正'}{'_id': 2, 'stu_id': 2019002, 'name': '张长明'}{'_id': 3, 'stu_id': 2019003, 'name': '王宝名'}{'_id': 4, 'stu_id': 2019004, 'name': '王城五'} {'_id': 2, 'stu_id': 2019002, 'name': '张长明'}{'_id': 3, 'stu_id': 2019003, 'name': '王宝名'}{'_id': 4, 'stu_id': 2019004, 'name': '王城五'} {'_id': 2, 'stu_id': 2019002, 'name': '赵章民'}{'_id': 3, 'stu_id': 2019003, 'name': '王宝名'}{'_id': 4, 'stu_id': 2019004, 'name': '王城五'}代码:from django.shortcuts import render,redirect from django.http import HttpResponse from django.urls import reverse # Create your views here. from DjangoApp.models import Student def get_student(request): student_list = Student.objects.all().values() return HttpResponse(student_list) def add_student(request): ########## Begin ########## ########## End ########## return redirect(reverse('get_student')) def del_student(request): ########## Begin ########## ########## End ########## return redirect(reverse('get_student')) def put_student(request): ########## Begin ########## ########## End ########## return redirect(reverse('get_student'))
06-05
内容概要:本文详细介绍了扫描单分子定位显微镜(scanSMLM)技术及其在三维超分辨体积成像中的应用。scanSMLM通过电调透镜(ETL)实现快速轴向扫描,结合4f检测系统将不同焦平面的荧光信号聚焦到固定成像面,从而实现快速、大视场的三维超分辨成像。文章不仅涵盖了系统硬件的设计与实现,还提供了详细的软件代码实现,包括ETL控制、3D样本模拟、体积扫描、单分子定位、3D重建和分子聚类分析等功能。此外,文章还比较了循环扫描与常规扫描模式,展示了前者在光漂白效应上的优势,并通过荧光珠校准、肌动蛋白丝、线粒体网络和流感A病毒血凝素(HA)蛋白聚类的三维成像实验,验证了系统的性能和应用潜力。最后,文章深入探讨了HA蛋白聚类与病毒感染的关系,模拟了24小时内HA聚类的动态变化,提供了从分子到细胞尺度的多尺度分析能力。 适合人群:具备生物学、物理学或工程学背景,对超分辨显微成像技术感兴趣的科研人员,尤其是从事细胞生物学、病毒学或光学成像研究的科学家和技术人员。 使用场景及目标:①理解和掌握scanSMLM技术的工作原理及其在三维超分辨成像中的应用;②学习如何通过Python代码实现完整的scanSMLM系统,包括硬件控制、图像采集、3D重建和数据分析;③应用于单分子水平研究细胞内结构和动态过程,如病毒入侵机制、蛋白质聚类等。 其他说明:本文提供的代码不仅实现了scanSMLM系统的完整工作流程,还涵盖了多种超分辨成像技术的模拟和比较,如STED、GSDIM等。此外,文章还强调了系统在硬件改动小、成像速度快等方面的优势,为研究人员提供了从理论到实践的全面指导。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值