如何在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.           
  2.         d1=DepartmentInfo.objects.get(depart_id=1) #  d1表示UserInfo的外键数据  
  3.         r1=Role.objects.get(role_name=role)        #  r1表示UserInfo的多对多数据  
  4.         u1=UserInfo(user_name=name,user_pwd=password,sex=sex,mobileno=mobile,email=email,depart=d1)  
  5.         u1.save()  
  6.         u1.role.add(r1)  
  7.         u1.save()  

 

 

总结:

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


下一篇:MySQL表更新操作