Найти - Пользователи
Полная версия: __unicode__ разбираемся раз и навсегда
Начало » Django » __unicode__ разбираемся раз и навсегда
1
wiygn
Здравствуйте, минут 40 листал результаты поисковой выдачи по __unicode__, но так и не смог решить проблему. У меня python 3.2

Итак, models.py
class Post(models.Model):
	heading = models.CharField("Заголовок", max_length=200)
	content = models.TextField("Содержание", max_length=2000)
	def __unicode__(self):
		return self.heading

Добавляем через консоль или через админку пост. Далее назревает проблема:
в консоли
E:\mysite\mysite>manage.py shell
>>> from blog.models import Post
>>> Post.objects.all()
[<Post: Post object>, <Post: Post object>]
>>>
Я, возможно, чего-то не понял во фразе из туториала:
It’s important to add __unicode__() methods to your models, not only for your own sanity when dealing with the interactive prompt, but also because objects’ representations are used throughout Django’s automatically-generated admin.,
но никаких дополнительных манипуляций с кодом завершать не нужно, и в самом примере все выглядит прекрасно сразу после добавления __unicode__ в модель

class Poll(models.Model):
    # ...
    def __unicode__(self):
        return self.question

>>> from polls.models import Poll, Choice

# Make sure our __unicode__() addition worked.
>>> Poll.objects.all()
[<Poll: What's up?>]
Собственно, что я делаю не так?
FishHook
>>>У меня python 3.2
ИМХО, рановато Вы Джангу под третьим питоном юзаете, нужно подождать до версии 1.6
wiygn
Все-таки неправильно понял объяснения на stackoverflow. В python 3+ вместо __unicode__ используется __str__. В итоге имеем такой код:
class Post(models.Model):
	heading = models.CharField("Заголовок", max_length=200)
	def __str__(self):
		return self.heading
Проверяем в консоли:
>>>from blog.models import Post
>>> Post.objects.all()
[<Post: ddddddd>, <Post: FOO>]
Успех

Вывод для таких же нубов как и я: сначала читать документацию, потом браться за туториалы. Закройте тему, пожалуйста.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB