首页 > 系统管理 > Django了不起的双下划线(跨表查询)
2017
02-09

Django了不起的双下划线(跨表查询)

model创建

class User_typ(models.Model):
    name=models.CharField(max_length=32)

class User(models.Model):
    name=models.CharField(max_length=32)
    age=models.IntegerField(max(100))
    type=models.ForeignKey(User_typ)

表操作

查询User表中的所有数据

obj=User.objects.all()

打印sql语句

print obj.query

SELECT `tt_user`.`id`, `tt_user`.`name`, `tt_user`.`age`, `tt_user`.`type_id` FROM `tt_user`

查找单个字段

>>> obj=User.objects.all().values('name')

>>> print obj.query

SELECT `tt_user`.`name` FROM `tt_user`

使用双__跨表查询 (User表中所有的普通用户)

obj=User.objects.filter(type__name='普通用户')

使用双__ 查询

obj=User.objects.all().values('age','type__name')

如果要跨多个表查询

表关系如下 cc是bb的外键bb是cc的外键

 class aa(models.Model):
      a=models.CharField(max_length=32)
class bb(models.Model):
    b=models.CharField(max_length=32)
    b1=models.ForeignKey(User_typ)
class cc(models.Model):
    c=models.CharField(max_length=32)
    c1=models.ForeignKey(User_typ)

要查询aa中a的

obj=cc.objects.filter(c1__b1__a='xx')




最后编辑:
作者:tshare365
这个作者貌似有点懒,什么都没有留下。
捐 赠您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请狠狠点击

留下一个回复