django, список моделей в список строк

#python #django #list #django-models

#python #django #Список #django-модели

Вопрос:

У меня есть список объектов модели:

просто пример (на самом деле я не делаю список всех ()):

 class Tag(models.Model):
    name = models.CharField(max_length=50,primary_key=True)
    #Some other fields....

    def __str__(self):
        return self.name

mylist = list(Tag.objects.all())
  

Каков наилучший способ преобразовать это в список строк?
Должен ли я повторять список?

Я делал что-то вроде:

 newList = [ t.str() for t in mylist ]
  

Есть способ получше?

Комментарии:

1. Я думаю, что если вам действительно нужен список строк, ваш код подойдет. Вопрос в том, действительно ли вам нужно преобразовать в строку? Помните, что шаблоны используют ваш метод __str__ or __unicode__ , поэтому вам не нужно передавать им строки. Вы также могли бы сделать [x.name для x в mylist] это может быть немного быстрее.

2. Это не для шаблона… Я получаю список элементов со сложным запросом. затем мне нужно получить одно из полей в виде строки и передать этот список в другой запрос

Ответ №1:

Это

 newList = [ str(t) for t in mylist ]
  

или

 newList = map( str, myList )
  

Но, как правило, мы не беспокоимся. Мы просто оставляем это шаблону для преобразования набора запросов в строки при визуализации шаблона.

Комментарии:

1. Как вы отображаете это в шаблоне?

2. Обычным способом: {% for item in the list %}{{item}}{% endfor %} Элементы автоматически преобразуются в строки в шаблоне. Вы должны увидеть это: docs.djangoproject.com/en/1.3/ref/templates/api