我在使用django框架时,在models中写了一个建筑表building和房间表room,其中房间表引用建筑表中的建筑编号作为外键,但是在后台显示中显示为object(1)
models.py(建筑表)
class building(models.Model):
building_id=models.AutoField('建筑编号',primary_key=True)
building_name=models.CharField('建筑名称',max_length=100)
remark=models.CharField('备注',max_length=150)
class Meta:
db_table='building'
verbose_name='建筑基本信息'
verbose_name_plural = verbose_name
models.py(房间表)
class room(models.Model):
room_id=models.AutoField('房间编号',primary_key=True)
room_name=models.CharField('房间名称',max_length=100)
building_id=models.ForeignKey(building,verbose_name='建筑编号',on_delete=models.CASCADE,)
remark=models.CharField('备注',max_length=150)
class Meta:
db_table='room'
verbose_name='房间基本信息'
verbose_name_plural = verbose_name
显示时:
筛选也是如此:
解决办法:
在被引用的字段下添加def__str__(self)进行输出,注意进行强制转换
class building(models.Model):
building_id=models.AutoField('建筑编号',primary_key=True)
def __str__(self):
return str(self.building_id)
building_name=models.CharField('建筑名称',max_length=100)
remark=models.CharField('备注',max_length=150)
class Meta:
db_table='building'
verbose_name='建筑基本信息'
verbose_name_plural = verbose_name
这样就可以啦。