Почему в файле models.py требуется функция Юникода?
т.е.
def __unicode__(self)
return sumid;
Почему в файле models.py требуется функция Юникода?
т.е.
def __unicode__(self)
return sumid;
Это не так. Если вы определяете метод __unicode__()
, Django будет вызывать его, когда ему нужно визуализировать объект в контексте, где требуется строковое представление (например, на страницах администрирования модели).
В документации говорится:
Вызывается метод
__unicode__()
когда вы вызываетеunicode()
на объект. Поскольку база данных Django backend вернет строки Unicode в ваших атрибутах модели вы бы обычно хочу написать__unicode__()
метод для вашей модели.
Я немного новичок в 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
).
Надеюсь, это поможет: -)
Я думаю, что другие дали некоторые подробные объяснения, которые должны быть более чем достаточно для вас. Но вот прямой ответ: __unicode__()
эквивалентен toString()
в Java (и многих других языках)