Использование юникода в Django

Почему в файле models.py требуется функция Юникода?

т.е.

def __unicode__(self)
    return sumid;

Ответ 1

Это не так. Если вы определяете метод __unicode__(), Django будет вызывать его, когда ему нужно визуализировать объект в контексте, где требуется строковое представление (например, на страницах администрирования модели).

В документации говорится:

Вызывается метод __unicode__()когда вы вызываете unicode() на объект. Поскольку база данных Django backend вернет строки Unicode в ваших атрибутах модели вы бы обычно хочу написать __unicode__()метод для вашей модели.

Ответ 2

Я немного новичок в Django, но я думаю, что смогу вам помочь.

Во-первых, это не совсем необходимо, но это действительно хорошая идея. Поле используется для создания представлений ваших объектов в администраторе Django (в противном случае все они имеют одно и то же имя: -P), и когда вы распечатываете объект в окне терминала, чтобы узнать, что происходит (в противном случае вы получаете общий бесполезный сообщение).

Во-вторых, из того, что вы написали, похоже, что вы новичок в Python. Я рекомендую прочитать некоторые уроки Python по синтаксису классов. Кроме того, точки с запятой не нужны на этом языке. Правильный синтаксис для создания метода unicode:

class Foo(models.Model):
    # Model fields go here

    def __unicode__(self):
        return u"%i" % self.sumid

Метод __unicode__ имеет двойные подчеркивания, потому что это особая функция, а именно, когда на него вызывается встроенная функция unicode( obj ), она возвращает строковое представление этого юникода (вроде java ToString).

Надеюсь, это поможет: -)

Ответ 3

Я думаю, что другие дали некоторые подробные объяснения, которые должны быть более чем достаточно для вас. Но вот прямой ответ: __unicode__() эквивалентен toString() в Java (и многих других языках)