Django ORM 一对多表的创建
发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,前面已经学习了在Django里面,如何对单表进行增删改查询。下面学习一下如果存在外键约束的情况下,如何创建。例1models.pyfrom django.db import modelsclass U
千家信息网最后更新 2025年12月03日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安全错误
数据库的锁怎样保障安全
公司接收软件开发任务分录
百度空间服务器
数据库管理工具登录服务器
海外服务器免费ip地址怎么用
传奇手游投资一个服务器要多少钱
高职计k算机网络技术好就业吗
惠山区管理软件开发报价方案
厦门向往家网络技术
服务器类型n
靠谱软件开发企业网站建设
嘉定市网络安全和信息化
软件开发招聘郑州
计算机网络安全技术试题
通信学生学数据库有用么
杜比服务器算科视吗
濮阳市国家网络安全宣传周活动
实用网络技术是干嘛的
c语言网络技术和编程语言总结
深圳快快网络技术有限公司
地震数据存到数据库
网络安全产品排名2017
6543是什么数据库的端口号
怎么提升网络安全防范能力
数据库中图书类别有什么用
科技互联网项目都有什么
数据库文件大小
会考选修网络技术应用
云服务器 上市公司
麦块下载服务器不加载怎么办
新疆网信网络技术