Печать объектов в Django

Поэтому я успешно подключил Django к уже существующей базе данных (проверяю, проверяю и синхронизирую), и я создал приложение и проект, и все это (я читаю книгу Django, и я нахожусь в главе 5), но когда я на самом деле запускаю его и печатаю, я получаю (предполагаемую) ошибку. Хотя в python я правильно импортирую то, что мне нужно ( from myapp.models import Artist ), но если я попытаюсь напечатать, например, первые пять строк в таблице ( print Artist.objects.all()[:5] ), Я получаю это:

 [<Artist: Artist object>, <Artist: Artist object>, <Artist: Artist object>, <Artist: Artist object>, <Artist: Artist object>] 

Почему он фактически не печатает значения вместо того, что кажется заполнителем? Здесь что-то не хватает?

3 Solutions collect form web for “Печать объектов в Django”

Django использует ORM (Object-Relational Mapper), который переводит данные между объектами Python и строками базы данных. Поэтому, когда вы используете его для получения элемента из базы данных, он преобразует его в объект Python.

Если этот объект не определяет, как отображать себя как текст, Django делает это за вас. Python делает то же самое:

 >>> class MyObject(object): ... pass ... >>> [MyObject(), MyObject()] [<__main__.MyObject object at 0x0480E650>, <__main__.MyObject object at 0x0480E350>] 

Если вы хотите увидеть все фактические значения строки для каждого объекта, используйте values .

Вот пример из документов:

 # This list contains a Blog object. >>> Blog.objects.filter(name__startswith='Beatles') [<Blog: Beatles Blog>] # This list contains a dictionary. >>> Blog.objects.filter(name__startswith='Beatles').values() [{'id': 1, 'name': 'Beatles Blog', 'tagline': 'All the latest Beatles news.'}] 

UPDATE: в Python 3.x используйте __str__ вместо __unicode__

То, что вы видите, это список экземпляров модели Artist. Ваши значения находятся в объекте python. Если вы хотите, чтобы представление этих экземпляров было более полезным, вы должны определить метод __unicode__ чтобы они могли напечатать что-то полезное:

https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#unicode

Это не местозаполнитель, его фактическое представление объекта, преобразованное в unicode.

если вы хотите использовать метод печати ovveride, метод unicode в самой модели

  def __unicode__(self): return u'%s' % (self.id) 

здесь примерная модель

 class unit(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=255) def __unicode__(self): return u'%s' % (self.name) print(unit.objects.all()) [unit: KG, unit: PCs] 
  • 3D-расчет расстояний с GeoDjango
  • Проверка JQuery - проверка доступности электронной почты и имени пользователя с сервера Django
  • Почему Django и CherryPy не поддерживают HTTP-глагол?
  • Django - как получить содержимое тега {% block%} из шаблона
  • Django - ссылки на статические файлы в шаблонах
  • Версии статических файлов django
  • Python3 Django -> HTML для PDF
  • Миграции Django - можно ли использовать Юг в середине проекта?
  • Python - лучший язык программирования в мире.