当前位置: 首页 > news >正文

Django 对模型创建的两表插入数据

1,添加模型

 Test/app8/models.py

from django.db import modelsclass User(models.Model):username = models.CharField(max_length=50, unique=True)email = models.EmailField(unique=True)password = models.CharField(max_length=128)  # 使用哈希存储密码first_name = models.CharField(max_length=60)last_name = models.CharField(max_length=50)# 添加其他字段,例如:# age = models.IntegerField()# bio = models.TextField()# ...class Meta:db_table = 'users2'def __str__(self):return self.usernameclass Person(models.Model):name = models.CharField(max_length=100)age = models.IntegerField()def __str__(self):return self.nameclass Passport(models.Model):person = models.OneToOneField(Person, on_delete=models.CASCADE)passport_number = models.CharField(max_length=20)issue_date = models.DateField()def __str__(self):return f"{self.passport_number} - {self.person.name}"

2,执行迁移命令 

python manage.py makemigrations app8
python manage.py migrate app8

 使用迁移命令会生成Person和Passport两个张模型表,Passport表中生成一个外键,命名为person_id

3,创建视图函数

Test/app8/views.py

from django.shortcuts import render
from .models import Userdef create_user(request):if request.method == 'POST':username = request.POST.get('username')email = request.POST.get('email')# ... 获取其他字段的值# 创建用户实例user = User(username=username,email=email,# ... 填充其他字段)user.save()  # 保存到数据库# ... 处理成功或失败的逻辑return render(request, '8/1.html')from django.shortcuts import render, get_object_or_404
from django.http import HttpResponse
from app8.models import Person, Passportdef delete_person(request, person_id):person_to_delete = get_object_or_404(Person, id=person_id)person_to_delete.delete()return HttpResponse("Person and associated Passport have been deleted.")from django.shortcuts import render
from django.http import HttpResponse
from .models import Person, Passport
import datetimedef add_data(request):if request.method == 'POST':name = request.POST.get('name')age = request.POST.get('age')passport_number = request.POST.get('passport_number')issue_date = request.POST.get('issue_date')person = Person(name=name, age=age)person.save()passport = Passport(person=person, passport_number=passport_number, issue_date=datetime.datetime.strptime(issue_date, '%Y-%m-%d').date())passport.save()return HttpResponse("数据已成功保存!")else:return render(request, '8\insert_data.html')

4,添加html代码

Test/templates/8/insert_data.html

<!DOCTYPE html>
<html>
<head><title>插入数据</title>
</head>
<body><form method="post">{% csrf_token %}<label for="name">姓名:</label><br><input type="text" id="name" name="name"><br><label for="age">年龄:</label><br><input type="text" id="age" name="age"><br><label for="passport_number">护照号码:</label><br><input type="text" id="passport_number" name="passport_number"><br><label for="issue_date">发行日期:</label><br><input type="date" id="issue_date" name="issue_date"><br><input type="submit" value="提交"></form>
</body>
</html>

5,访问页面

http://127.0.0.1:8000/app8/add_data/

<!DOCTYPE html>
<html>
<head><title>插入数据</title>
</head>
<body><form method="post">{% csrf_token %}<label for="name">姓名:</label><br><input type="text" id="name" name="name"><br><label for="age">年龄:</label><br><input type="text" id="age" name="age"><br><label for="passport_number">护照号码:</label><br><input type="text" id="passport_number" name="passport_number"><br><label for="issue_date">发行日期:</label><br><input type="date" id="issue_date" name="issue_date"><br><input type="submit" value="提交"></form>
</body>
</html>

可以看到插入的数据成功落库了

 

相关文章:

  • 11.SQL注入-盲注基于(base on boolian)
  • sharepoint api 没有这个文件所属site的权限的情况下访问指定文件
  • 脑启发设计:人工智能的进化之路
  • 深入理解计算机系统 CSAPP 家庭作业8.26
  • RPM方式安装mysql
  • 无法解析的外部符号 _imp_XXX
  • 基于Hadoop平台的电信客服数据的处理与分析④项目实现:任务15:数据生产
  • 【unity实战】使用Unity实现动作游戏的攻击 连击 轻重攻击和打击感
  • 航空数据管控系统-①项目准备阶段:任务2:项目技术预研(技术架构)
  • 对标 GPT-4o 的开源实时语音多模态模型:Moshi
  • 【BUUCTF-PWN】9-ciscn_2019_n_8
  • Matplotlib 简介
  • 康姿百德磁性床垫好不好,效果怎么样靠谱吗
  • Hadoop集群搭建
  • threejs 微信小程序原生版本的使用 obj模型的加载
  • 《网管员必读——网络组建》(第2版)电子课件下载
  • 【JavaScript】通过闭包创建具有私有属性的实例对象
  • 【每日笔记】【Go学习笔记】2019-01-10 codis proxy处理流程
  • 230. Kth Smallest Element in a BST
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • CentOS7简单部署NFS
  • Java教程_软件开发基础
  • JS创建对象模式及其对象原型链探究(一):Object模式
  • mac修复ab及siege安装
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • vuex 学习笔记 01
  • Webpack 4 学习01(基础配置)
  • 和 || 运算
  • 简单实现一个textarea自适应高度
  • 简单数学运算程序(不定期更新)
  • 坑!为什么View.startAnimation不起作用?
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 你真的知道 == 和 equals 的区别吗?
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 事件委托的小应用
  • 数据可视化之 Sankey 桑基图的实现
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 延迟脚本的方式
  • #### go map 底层结构 ####
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (17)Hive ——MR任务的map与reduce个数由什么决定?
  • (Matalb分类预测)GA-BP遗传算法优化BP神经网络的多维分类预测
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (转) 深度模型优化性能 调参
  • (转)ObjectiveC 深浅拷贝学习
  • (转)大道至简,职场上做人做事做管理
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .net 无限分类
  • .NET 依赖注入和配置系统