Django Модель не печатает детали модели - PullRequest
0 голосов
/ 15 января 2020

Я новичок в Django / python и помогаю команде в миграции проекта Django, поскольку необходимо перенести установленный сервер.

Старая версия

Django - 1.6.5

Python - 2.7

Из-за некоторой совместимости и версий, недоступных, ниже версий, на которые мы мигрировали и смогли вывести Приложение без каких-либо ошибок. Произошла некоторая ошибка компиляции, связанная с устаревшими методами, которая смогла исправить это.

Мигрированная версия

Django - Django -1.6.5

Python - 3.4

База данных - sqllite

Подушка - Подушка-3.3.0

PIP - пип-1.5.4

Все выглядит хорошо, кроме админ-модуля. На главном административном экране вместо отображения полей модуля просто отображается имя объекта.

Ниже списка моделей местоположений, который использовался для отображения до миграции

Местоположение

Номер: A | Кабина inet: 23 | Ящик: 7

Комната: A | Кабина inet: 24 | Ящик: 4

После миграции он просто отображает имя объекта местоположения

Местоположение

Местоположение объекта

Объект местоположения

Я посмотрел на модель.py и ниже определенной модели местоположения

** Класс Location (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 import admin

из mgmt.models import *

admin.site.register (Location) *


Любая помощь будет принята с благодарностью, поскольку я не вижу каких-либо изменений кода в 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 голосов
/ 16 января 2020

Спасибо, Мухаммед, я попробовал это, затем шаблоны начали выдавать ошибку.

Например, я получаю разные ошибки в разных шаблонах, как показано ниже. У меня разные модели, и все разные модели начали выдавать ту или иную ошибку, связанную с нестроковым (тип Item), на экране редактирования

Ошибка 1 - когда я нажимаю на историю

* str возвращено нестроковое (тип Item) Метод запроса: GET URL запроса: 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 в force_text, строка 106 *

Ошибка 2, когда я нажимаю на правку

* TypeError at / admin / mgmt / tooling / PRO102937 / str вернул нестроковый (тип Item) Метод запроса: GET URL запроса: 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 в force_text, строка 106 *

0 голосов
/ 16 января 2020

попробуйте заменить def __unicode__(): на def __str__(): как

в Python 2, def __unicode__(): использовалось для определения понятного человеку представления объекта. Но в Python 3 это был заменен на def __str__():

...