Django ORM 一对多表的创建
发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,前面已经学习了在Django里面,如何对单表进行增删改查询。下面学习一下如果存在外键约束的情况下,如何创建。例1models.pyfrom django.db import modelsclass U
千家信息网最后更新 2025年01月23日Django ORM 一对多表的创建
前面已经学习了在Django里面,如何对单表进行增删改查询。下面学习一下如果存在外键约束的情况下,如何创建。
例1
models.py
from django.db import modelsclass UserGroup(models.Model): uid = models.AutoField(primary_key=True) caption = models.CharField(max_length=32,unique=True) ctime = models.DateTimeField(auto_now_add=True, null=True) uptime = models.DateTimeField(auto_now=True, null=True) class UserInfo(models.Model): username = models.CharField(max_length=32,blank=True,verbose_name='用户名') password = models.CharField(max_length=60, help_text='pwd') email = models.CharField(max_length=60) test = models.EmailField(max_length=19,null=True,error_messages={'invalid': '请输入密码'}) # user_group_id 数字 user_group = models.ForeignKey("UserGroup",to_field='uid') # (uid,catption,ctime,uptimew) user_type_choices = ( (1, '超级用户'), (2, '普通用户'), (3, '普普通用户'), ) user_type_id = models.IntegerField(choices=user_type_choices,default=1)
创建外键约束的关键语句就是一条命令。
user_group = models.ForeignKey("UserGroup",to_field='uid') # (uid,catption,ctime,uptime)
注意几点:
to_field 指向另外一个类的主键
默认情况下,他会创建级联删除的约束,也就是说如果我删除user_group里面的一行数据,userInfo表里和这个uid数据关联的行都会自动删除;我们可以通过 on_delete=models.SET_NULL来禁止删除
在UserInfo的表里,他会自动创建一个新的字段 user_group_id 作为外键的字段,而不是我们类里面定义的user_group。但是有趣的是,我们在程序里面可以直接在userInfo的对象里面引用 user_group对象。
数据库里面创建的表,注意字段名称
下面看个调用的实例
例2. 可以看见我能够通过row.user_group.caption来直接获取用户组表的信息,相当于执行了一个left join的查询操作
views.py
def user_info(request): if request.method == "GET": user_list = models.UserInfo.objects.all() group_list = models.UserGroup.objects.all() return render(request, 'user_info.html', {'user_list': user_list, "group_list": group_list})
user_info.html
添加用户
用户列表
- {% for row in user_list %}
- {{ row.username }} | {{ row.user_group.caption }} 删除 | 编辑 {% endfor %}
用户
字段
数据
普通
对象
情况
表里
学习
查询
有趣
一行
也就是
也就是说
会创
信息
关键
可以通过
名称
命令
实例
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
重生之软件开发小说
其他数据库高会影响直播推荐吗
在客户 服务器模型中
aes服务器
阿克苏塔式服务器维保费用
数据库支持数据导出到表格
网络安全必须要知道的几个知识
怎么看数据库技术
计算机网络技术第2版答案
rails数据库连接池
做到高级软件开发后能做什么
网络技术挑战赛作品展示
creo注册服务器卡死
根服务器管理权
数据库按条件查询后计算平均值
数据库的核心基础是什么
宝山区咨询网络技术服务常见问题
搭建tftp服务器
百里半网络技术
军团要塞2服务器英语
网络安全工作上升
网络安全课进校园作文400
数据库支持数据导出到表格
深圳南方网络技术开发有限公司
文件服务器备份工具
低代码软件开发怎么做到的
国务院关于网络安全审查意见
车辆管理系统服务器
估算数据库数据量
泉州直播软件开发报价