2010-05-07 2 views

ответ

1

поэтому администратор может отображать свои панировочные сухари, и вы можете поместить {{myobject}} в шаблон, чтобы показать __unicode__ вашего объекта.

+0

В шаблоне, почему мне нужно показать __unicode__ объекта? – TIMEX

+0

например: '{{ object }}' И это «unicode» вместо «str», потому что django использует unicode везде. – mawimawi

2

__unicode__ - это «волшебный метод» Python, который определяет, как выглядит ваш объект, когда вы хотите отобразить этот объект в виде строки в Юникоде. Это не зависит от Django или что-то еще, но в любое время вы вызываете str() или unicode() или используете интерполяцию строк и передаете этот объект, он будет вызывать этот метод, чтобы определить, какая строка юникода возвращается.

Для объектов, отображаемых в шаблонах, этот метод будет вызываться для определения того, что отображается в шаблоне, потому что это метод, который использует Python для определения того, как выглядит объект в виде символьной строки.

5

Этих ресурсы делают намного лучшую работу в объяснении, что я могу:

Django Docs
Python Docs
__str__ versus __unicode__

Короче говоря, вам нужно определить __unicode__ так Django может напечатать некоторое читаемое представление при вызове объект. __unicode__ также является «новым» предпочтительным способом возврата символьной строки.

1

По моему опыту, существует одна очень важная причина, по которой определять метод __unicode__: оболочка Django.

Игра с консолью обычно является очень мощным инструментом при разработке приложения Django, поскольку позволяет проверять ваши (и другие) классы, а также быстро создавать прототипы идей и решений.
И, работая в оболочке, каждый раз, когда вы делаете print a, где a является экземпляром модели, вы будете благодарны за много, используя метод __unicode__, который позволяет легко распознать, с каким объектом вы работаете.

Смежные вопросы