实用Django ORM实用操作方法

  1. all,values,values_list数据类型的获取
models.xx.objects.all()			# 取到的是queryset的对象类型:[obj,obj,obj]
models.xx.objects.values()		# 取到的是字典类型:[{'id':'1'},{'name':'wxp'},{...}]
models.xx.objects.values_list() # 取到的是元祖类型:[(1,'wxp'),(...)]
  1. ForeignKey常用操作-表与表之间的关系和跨表操作
    B表的中的列?
    B表:id,name,fk_id
class A(models.Model):
    name = models.CharField(...)
class B(models.Model):
    name = models.CharField(...)
    fk = models.ForeignKey('A')
b_list = models.B.objdecs.all()											# obj
for item in b_list:
	print(itme.id)
	print(itme.name)
	print(itme.fk_id)
	print(itme.fk)
	print(itme.fk.name)
	print(itme.fk.id)
b_list = models.B.objdecs.values('id','name','fk_id','fk__name',)		# dict
for item in b_list:
	print(itme['id'])
	print(itme['name'])
	print(itme['fk_id'])
	print(itme['fk__name'])
b_list = models.B.objdecs.values_list('id','name','fk_id','fk__name',)	# tuple
for item in b_list:
	print(itme[0])
	print(itme[1])
	print(itme[2])
	print(itme[3])
# 找A表中某人在B表中的所有数据
models.B.objects.filter(fk__name='某人')
  1. ManyToMany常用操作
    B表中的列?
    B表:id,name
    ManyToManyField操作会自动生产第三张表,m字段用于对第三张表的操作
class A(models.Model):
    name = models.CharField(...)
class B(models.Model):
    name = models.CharField(...)
    m = ManyToManyField('A')
# B表中的某人与A表中的某几个人创关系
obj = models.B.objdecs.create(name='xxx')								# 在B表中创建数据
obj.m.add(*[1,2,3])
# or
obj.m.add(1)
obj.m.add(2)
obj.m.add(3)
# 查找B表中某人与A表中有关联的某几个人
obj = models.B.objects.filter(name='xxx')
obj.m.all()																# [A-obj,A-obj,A-obj]

posted on 2017-11-08 15:02  运维小学生  阅读(133)  评论(0编辑  收藏  举报

导航