如何在DJANGO里,向有外键(一对多和多对多)的DB里插入数据?

需要插入的数据表结构如下:

[python] view plaincopy

  1. class UserInfo(models.Model):
  2. user_id =models.AutoField(primary_key=True)
  3. user_name=models.CharField(max_length=20,unique=True)
  4. depart=models.ForeignKey(DepartmentInfo)
  5. role=models.ManyToManyField(Role)

*注:从上述类中可以看出UserInfo除了一般的表项外,还有有一个外键,和一个多对多的field

插入数据方法如下:

[python] view plaincopy

  1. d1=DepartmentInfo.objects.get(depart_id=1) #  d1表示UserInfo的外键数据
  2. r1=Role.objects.get(role_name=role)        #  r1表示UserInfo的多对多数据
  3. u1=UserInfo(user_name=name,user_pwd=password,sex=sex,mobileno=mobile,email=email,depart=d1)
  4. u1.save()
  5. u1.role.add(r1)
  6. u1.save()

总结:

    • 普通数据项:直接插入
    • 外键数据项:先获取要插入的外键,然后和普通想一起插入
    • 多对多数据项:获取要插入的多对多数据项,待表中普通数据项和外键数据项save后,使用.add方法加入
      • PS,如果判断更新还是插入呢?
      • obj, created = DeployPool.objects.update_or_create(    aa=aa)print obj, created
时间: 2024-10-28 09:50:52

如何在DJANGO里,向有外键(一对多和多对多)的DB里插入数据?的相关文章

Mysql学生管理系统:表的建立,外键一对多,多对多关系,中间关联表的建立

学生管理系统 管理员注册/登录/注销 注册班级(班级详细信息) 注册学生信息 查看班级信息/查看老师资料 教师注册/注销  查看教师资料  查看学生资料  根据名称/班级/ 查看学生详细信息--支持模糊 注册科目 管理员(admini) ad_id(管理员id)     ad_number(管理员账号) ad_pass(管理员密码)    ad_yn(管理员是否禁用) create table admini( ad_id int PRIMARY KEY AUTO_INCREMENT,-- 主键自

django 中新添加外键后一直报错

在模型中添加了外键,然后一直显示**_id无数值 原因在于在model中新添加字段,没有写进数据库 正确操作为: 首先,进入开发环境(也就是说,不是在发布环境里): 1.在你的模型里添加字段. 2.运行 manage.py sqlall [yourapp] 来测试模型新的 CREATE TABLE 语句. 注意为新字段的列定义. 3.开启你的数据库的交互命令界面(比如, psql 或mysql , 或者可以使用 manage.py dbshell ). 执行 ALTER TABLE 语句来添加新

[Django]orm中的外键级联删除

这里的系统环境为django1.6   os为win7 今天有个需求说的是添加一个地区表,然后用外键和几个非常重要的实体表来做关联(地区表作为其他表的外键),写完地区的删除操作的时候,测试了下代码,功能正常.可是眼睛移动到控制台输出的时候傻了 connexesql ->DELETE FROM `mngm_device` WHERE `mngm_device`.`area_id` IN (%s, %s, %s) connexesql ->DELETE FROM `ad_ad` WHERE `ad

python django中的orm外键级联删除

今天添加了一个路由表,路由表做外键,然后添加了几个组,路由表为组的外键,当我使用删除功能对路由表进行删除时,竞然将我的组也相当的删除了:尽管这是测试,但放到生产环境中还是会发生意外的:这个问题要解决: 在网上查了一下资料,问题主要是django orm的field字段有关: routemgr = models.ForeignKey('Routemgr',default=1,blank=True,null=True,on_delete=models.SET_NULL) 主要意思就是把Routemg

Django学习手册 - ORM 外键

Django 外键操作 关键语法: models.ForeignKey("UserGroup",to_field="gid",default=1,on_delete=models.CASCADE) 参数: "UserGroup"  #外键另外一张表 to_field="gid" #另外一张表的字段 on_delete=models.CASCADE  #因为不加这个会报错相关(https://www.cnblogs.com/ph

django中的数据库外键操作

以MYSQL为例: (1)在model中定义两个数据表,食物信息和食物类别信息 class foodInfo(models.Model): food_id = models.AutoField(max_length=4)   #自定义主键,不指定主键默认会生成一个名为'ID'列的主键 food_name = models.CharField(max_length=10) food_content = models.CharField(max_length=100) food_price = mo

如何在easyui datagrid 中显示外键的值

1.需要在角色列表显示角色类别的值,而角色类别是外键,关联数据字典,明细见下图: 2.代码如下: columns: [[ { field: 'ck', checkbox: true, align: 'left', width: 20 }, { field: 'RoleName', title: '角色名称', width: 80 }, { field: 'Dictionary', title: '角色类别', width: 100, formatter: function (value, row

django admin编辑被外键关联的主表时支持显示字表记录

假设有模型 class A(models.Model): name = models.CharField() class B(models.Model): name = models.CharField() a = models.ForeignKey(A) 如果想要在django admin 后台编辑A表记录时,能同时关联相应的B表记录, class BAdmin(admin.ModelAdmin): list_display = ['a__name', ] class BInline(admi

FOREIGN KEY 外键约束; UNIQUE和PRIMARY KEY 主键约束、CREATE INDEX建立索引的使用

1)foreign key 是个约束,意思是说如果你给A字段设置了外键约束,以后你要往A字段插入数据,这个数据一定是要在foreign key 后面跟的那个字段中存在的值.这个的意义就是约束了数据的完整性,不会插入错误的数据. 修改添加t_topic外键约束: ALTER TABLE t_topic ADD CONSTRAINT fk_userTopics FOREIGN KEY (user_id) REFERENCES t_users(id) 删除表t_topic外键: ALTER TABLE

3,外键之表关联关系,修改表,复制表

今日内容:  一:外键   一对多:   多对多:   一对一:  二:了解知识点   复制表   修改表相关操作     前戏:   所有的信息都在一张表中所带来的的问题    1,表的结构不清晰    2,浪费硬盘空间    3,表的扩展性极差(是一个很难逃避的缺点)   类似于我们把所有的代码都写在同一个py文件中    在确定表与表之间的关系时,一定要换位思考(必须两方都考虑周全之后才能得出结论)    以员工表和部门表为例:     先站在员工表看能否有多个员工对应一个部门