关于Django中models外键显示为object

本文介绍了在使用Django开发时,如何处理Room模型引用Building模型的外键问题,并提供了在room表中添加def__str__(self)方法以解决后台显示为object(1)的方法。通过实例代码演示了如何确保正确显示和输出建筑编号。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我在使用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

在这里插入图片描述
这样就可以啦。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值