Django通过Model查找数据遇到的问题

我先建立了一个学生与学生信息的一对一关系模型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Stu(models.Model):

stu_name = models.CharField(max_length=6, unique=True)
stu_sex = models.BooleanField(default=0)
stu_birth = models.DateField()

class Meta:
db_table= 'stu'


class StuInfo(models.Model):

stu_addr = models.CharField(max_length=30)
stu_age = models.IntegerField()
stu = models.OneToOneField(Stu)

class Meta:
db_table = 'stu_info'

我根据学生去查找学生信息

1
2
3
4
stu = Stu.objects.all().first()
stu_info = stu.StuInfo
print(stu_info.stu_addr)
return render(request, 'show_stu.html')

我想在调用url时,在控制台打印出我查询的数据,然后就出现报错

1
2
Exception Value:	
'Stu' object has no attribute 'StuInfo'

我通过对象去点上模型名,这样没问题啊,为什么会显示没有这个属性呢?

折腾了一下,发现把表名改为小写就可以查询了

1
stu_info = stu.stuinfo

所以说在数据库查询的时候,不管是一对一还是多对多,点上表名的时候都得用小写.

如果对于某些有强迫症的人,就必须要用表名去查询数据的话,可以使用这个来指定查询的相对名字

1
2
class Meta:
default_related_name = 'StuInfo'