Django模型未打印模型详细信息

时间:2020-01-15 20:05:58

标签: python django model admin

我是Django / python的新手,我正在帮助团队迁移Django项目,因为需要迁移已安装的服务器。

旧版本

Django-1.6.5

Python-2.7

由于某些兼容性和不可用的版本,低于我们迁移到的版本并能够启动应用程序而没有任何错误。发生了一些与不赞成使用的方法有关的编译错误,并且能够纠正这一错误。

迁移版本

Django-Django-1.6.5

Python – 3.4

数据库– sqllite

枕头-枕头3.3.0

PIP-pip-1.5.4

除管理模块外,其他所有内容看起来都不错。在管理主屏幕中,仅显示对象名称,而不显示模块字段。

在迁移之前用于显示的位置模型列表下方

位置

房间:A |内阁:23 |抽屉:7

房间:A |内阁:24 |抽屉:4

迁移后,它仅显示位置对象名称

位置

位置对象

位置对象

我查看了model.py,并在定义的位置模型下方

**类位置(models.Model):

room = models.CharField(max_length=31, 
                        help_text='(Required) e.g. A, B, C, D, E, F')

station = models.IntegerField(max_length=5, 
                        blank=True,
                        null=True,
                        help_text='e.g. 1, 2, ...')

cabinet = models.IntegerField(blank=True,
                              null=True,
                              help_text='e.g. 1, 2, ...')

shelf = models.IntegerField(blank=True,
                            null=True,
                            help_text='e.g. 1, 2, ...')

drawer = models.IntegerField(blank=True,
                             null=True,
                             help_text='e.g. 1, 2, ...')

map = models.ImageField(upload_to='location_maps', 
                        blank=True,
                        null=True)

class Meta:
    unique_together = (('room', 'station', 'cabinet' ,'shelf', 'drawer'),)


def __unicode__(self):
    string = 'Room: {}'.format(self.room)
    if self.station:
        string += ' | Station: {}'.format(self.station)
    if self.cabinet:
        string += ' | Cabinet: {}'.format(self.cabinet)
    if self.shelf:
        string += ' | Shelf: {}'.format(self.shelf)
    if self.drawer:
        string += ' | Drawer: {}'.format(self.drawer)
    return string*

下面的admin.py配置


*来自django.contrib导入管理员

从mgmt.models导入*

admin.site.register(位置)*


真的很感谢您的帮助,因为我看不到admin.py中的任何代码更改可以进行更正

表格下方

* CREATE TABLE“ mgmt_location”(

"id" integer NOT NULL PRIMARY KEY,

"room" varchar(31) NOT NULL,

"station" integer,

"cabinet" integer,

"shelf" integer,

"drawer" integer,

"map" varchar(100),

UNIQUE ("room", "station", "cabinet", "shelf", "drawer")

)*

2 个答案:

答案 0 :(得分:0)

尝试将def __unicode__():替换为def __str__():

在Python 2中,def __unicode__():用于确定对象的可读形式。但是在Python 3中,它已被def __str__():

取代

答案 1 :(得分:0)

感谢穆罕默德,我已经尝试过,然后模板开始出现错误。

例如,我在如下所示的不同模板中遇到了不同的错误。我有不同的模型,并且所有不同的模型都开始在编辑屏幕中给出与非字符串(项类型)有关的一个或另一个错误

错误1-当我单击历史记录

* str 返回了非字符串(类型为Item) 请求方法: 得到 要求网址: http://10.20.130.91:8000/admin/mgmt/equipment/S040942/history/ Django版本: 1.6.5 异常类型: TypeError 异常值: str 返回的非字符串(类型为Item)

异常位置: C:\ Python34 \ lib \ site-packages \ django \ utils \ encoding.py in force_text,第106 *行

错误2,当我点击“修改”

* TypeError / admin / mgmt / tooling / PRO102937 / str 返回的非字符串(类型为Item) 请求方法: 得到 要求网址: http://10.20.130.91:8000/admin/mgmt/tooling/PRO102937/ Django版本: 1.6.5 异常类型: TypeError 异常值: str 返回的非字符串(类型为Item)

异常位置: C:\ Python34 \ lib \ site-packages \ django \ utils \ encoding.py in force_text,第106行*