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

这样就可以啦。
我在使用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) rem
实际效果:
以上这篇解决Django后台ManyToManyField显示成Object的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。
您可能感兴趣的文章:Django ORM多对多查询方法(自定义第三张表&ManyToManyField)在Django admin中编辑ManyToManyField的实现方法Django 多表关联 存储 使用方法详解
django-dfk
django-dfk 为 Django 实现延迟外键。 延迟外键在概念上类似于通用外键,不同之处在于它们在运行时解析为真正的外键,并导致在数据库中创建正确的外键。
这个包允许你做两件事:
* Declare that a model's foreign key field is 'deferrable', and should be repointed later
* Repoint an existing model's foreign key fields, even if that model is not django-dfk aware.
您应该谨慎执行后者 - 将其视为与猴子修补类似的过程!
该软件包是 alpha 软件,功能不完整。 有关列表中的内容,请参阅 TODO 部分。
django-dfk 与 Python 2.6、2.7、3.2 和
需求:序列化外键,获取外键的除id之外的值
使用Django REST Framework虽然开发接口快速,但是如果想要获取到除外键id值之外的外键信息,直接继承serializers.ModelSerializer类,然后在fields中指定返回的字段是获取不到外键的其他值的,比如我现在需要外键的name属性值,下面就给大家介绍两种方法通过序列化外键来获取我们想要的外键的值。
这里有两个Model:问卷(Questionnaire);问题(Question)。一张问卷中包含多个问题,问题通过外键关联对应的问卷。
model.py
class Questionnaire(models.Mod
给继承自models.Model的类添加一句objects = models.Manager()即可,实例代码如我的models.py文件:
from django.db import models
# Create your models here.
class Book(models.Model):
objects = models.Manager() # 避免后续IDE找不到objects属性
# id = models.IntegerField() # 自动创建
先抛出一个问题。银行就相当于一个数据库,你去银行取钱存钱办卡销卡,是你告诉银行柜员方便还是你自己去操作电脑办卡取卡方便?(你还不一定会,假设自动存款机还没发明),object在数据库中就相当于银行里得银行柜员。
步入正题:
在django中的view.py中,我们可能回经常见到 book_set= Book.objects.all(),book_list = Book.ob...
它包含了一些基本字段以及数据的一些行为
我们只需要在类里面进行操作,就可以操作数据库,表,不需要直接使用SQL语句
我们通过创建类来创建数据表,所以对数据库的操作,都是对类与对类的对象进行操作,而不使用sql语句
ORM对象关系映射,实现了对象和数据库的映射,隐藏了数据访问的细节,不需要编写...
Django新手入门(五)——Models详解数据库ORMDjango中的ORMDjango中的Models定义models.py中的类常用数据字段常用设置选项常用函数以及修饰词其他常用设置在Django中使用数据库系统(以MySQL为例)
在之前的文章中,我们对Django的MTV模式进行了介绍,相信大家对于Models已经有了初步了解。在这篇文章中,我们将深入探索Models,以求深刻理解Django中的数据操作。
动态网站最重要的部分,毫无疑问非数据库莫属了。把所有数据通过数据库系统维护在一些