class mytable(models.Model):
abc = ...
xyz = ...
def __unicode__(self):
Почему нужен def __unicode__
?Зачем вам этот метод внутри модели Django?
class mytable(models.Model):
abc = ...
xyz = ...
def __unicode__(self):
Почему нужен def __unicode__
?Зачем вам этот метод внутри модели Django?
поэтому администратор может отображать свои панировочные сухари, и вы можете поместить {{myobject}} в шаблон, чтобы показать __unicode__
вашего объекта.
__unicode__
- это «волшебный метод» Python, который определяет, как выглядит ваш объект, когда вы хотите отобразить этот объект в виде строки в Юникоде. Это не зависит от Django или что-то еще, но в любое время вы вызываете str()
или unicode()
или используете интерполяцию строк и передаете этот объект, он будет вызывать этот метод, чтобы определить, какая строка юникода возвращается.
Для объектов, отображаемых в шаблонах, этот метод будет вызываться для определения того, что отображается в шаблоне, потому что это метод, который использует Python для определения того, как выглядит объект в виде символьной строки.
Этих ресурсы делают намного лучшую работу в объяснении, что я могу:
Django Docs
Python Docs
__str__
versus __unicode__
Короче говоря, вам нужно определить __unicode__
так Django может напечатать некоторое читаемое представление при вызове объект. __unicode__
также является «новым» предпочтительным способом возврата символьной строки.
По моему опыту, существует одна очень важная причина, по которой определять метод __unicode__
: оболочка Django.
Игра с консолью обычно является очень мощным инструментом при разработке приложения Django, поскольку позволяет проверять ваши (и другие) классы, а также быстро создавать прототипы идей и решений.
И, работая в оболочке, каждый раз, когда вы делаете print a
, где a
является экземпляром модели, вы будете благодарны за много, используя метод __unicode__
, который позволяет легко распознать, с каким объектом вы работаете.
В шаблоне, почему мне нужно показать __unicode__ объекта? – TIMEX
например: '{{ object }}' И это «unicode» вместо «str», потому что django использует unicode везде. – mawimawi