数据库表关系
1:1 OneToOne
- 建立关系:在模型的任意一边,使用OneToOneField
my_purchase = models.OneToOneField(purchase)
>>> p = purchase()
>>> p.purchase_model = "AD10"
>>> p.purchase_name = "电磁阀"
>>> p.save()
- 添加关系的一边,使用new(实例化)方法或create(创建)方法
>>> l = libs()
>>> l.libs_model = "01"
>>> l.libs_name = "楼下的库房"
>>> l.my_purchase = p
>>> l.save()
l = libs.objects.create(libs_model="01", libs_name="楼下的库房", my_purchase=p)
>>> p = purchase.objects.all()
>>> l = libs.objects.all()
>>> l[0].my_purchase.purchase_model
'AD10'
>>> libs.objects.get(libs_name="楼下的库房").my_purchase.purchase_model
'AD10'
>>> p = purchase.objects.all()
>>> l = libs.objects.all()
>>>purchase.objects.get(libs__libs_name="楼下的库房").purchase_model
'AD10'
- 修改
- 直接赋值修改,改后用.save()
- 批量修改用
.updata(name="xx")
- 删除
1:n OneToMany
my_purchase = models.ForengnKey("purchase")
- 添加
- 和一对一方法类似,通过create和new来添加
- create:把属性都填满,不需要save
- new:属性可以为空,需要save,save时候检查属性是否为空
- 查找
- 有添加属性的表查无添加属性的表,直接使用添加的属性查
- 无属性添加的表查有属性添加的表,系统自动在无属性添加的表下,添加一个
有属性添加的表名_set
的属性使用有属性添加的表名_set.all()
查看,有属性添加的表名_set.all().filter(条件)
有条件查找
t = libs.objects.create(libs_model="01", libs_name="楼下的库房")
n:n ManyToMany
my_purchase = models.ManyToManyField(purchase)
- 添加
- 添加新加属性时,使用
添加属性的表名.未添加属性表名.add(未添加属性的表中的项)
- 查询