#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