Django Template语法中 OneToOne、ForeignKey 外键查询
主表的Models的结构
class A(models.Model): username = models.CharField(max_length=32, verbose_name='用户名称') password = models.CharField(max_length=64, verbose_name='密码')
从表的Models的结构
class B(models.Model): name = models.CharField(max_length=30, verbose_name='员工姓名') number = models.CharField(max_length=30, unique=True, default=100101, verbose_name='员工工号') phone = models.CharField(max_length=11, blank=True, null=True, verbose_name='电话') a = models.OneToOneField(A,verbose_name='用户')
一、OneToOne
1、在Template中使用主表(A) 查询 从表(B)的内容
注意:在template中写 从表(B)的名称字母要小写,即使你的models中定义时使用的大小字母,也都要小写
# 通过主表查询子表内容,object_A为template中主表A的对象 {{ object_A.b.name }} # 子表B中的name字段信息 {{ object_A.b.number }} # 子表B中的number字段信息 {{ object_A.b.phone }} # 子表B中的phone字段信息
2、在Template中使用主表(B) 查询 从表(A)的内容
# 通过子表查询主表内容 {{ object_B.a.username }} {{ object_B.a.password }}
二、 ForeignKey
表C 中字段ForeignKey 到A表
class C(models.Model): info = models.CharField(max_length=32, verbose_name='信息') user= models.ForeignKey(A, verbose_name='用户')
1、从C表查A表的内容(正向查找)
{{ object_C.a.username }} # 表A中的username字段信息
2、从A表中查C表的内容(反向查找)
{{ object_A.c_set.info}} # 表C中的info字段信息 {{ object_A.c_set.all}} # 表C中的所有字段信息