◆ 外键
如果公共关键字在一个关系中是主关键字,那么这个公共关键字被称为另一个关系的外键。
创建外键:
#表一
class Foo(models.Model):
name = models.CharField(max_length=1)
#表二
class Business(models.Model):
# id
caption = models.CharField(max_length=32)
code = models.CharField(max_length=32,null=True,default="SA")
fk = models.ForeignKey('Foo') #不写关联表字段,默认为关联表主键
#表三
class Host(models.Model):
nid = models.AutoField(primary_key=True)
hostname = models.CharField(max_length=32,db_index=True)
ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)
port = models.IntegerField()
b = models.ForeignKey(to="Business", to_field='id')
◆ 外键查询:
1、通过点"."进行跨表
#
v = models.Host.objects.filter(nid__gt=0)
v[0].b.caption
v[0].b.fk.name
2、通过双下划线"__"进行跨表:
v2 = models.Host.objects.filter(nid__gt=0).values('nid','hostname','b_id','b__caption')
for row in v2:
print(row['nid'],row['hostname'],row['b_id'],row['b__caption'])
v3 = models.Host.objects.filter(nid__gt=0).values_list('nid','hostname','b_id','b__caption')
return render(request, 'host.html', {'v1': v1,'v2': v2,'v3': v3})