- 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'),(...)]
- 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='某人')
- 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]