Принятый ответ хорош, но он будет очень медленным с большими файлами -string - это неизменный класс, это означает, что каждый объект будет создан каждый раз, когда вы используете знак +
, используя list
в качестве структуры стека будет больше эффективный.
Это должно работать лучше
while True:
chunck = s.recv(10000)
if not chunck:
break
fragments.append(chunck)
print "".join(fragments)
Используйте обратную связь :
{% for role in current_project.role_set.all %}
<tr>
<td>{{ role.job.name }}</td>
<td>{{ role.user.username }}</td>
</tr>
{% endfor %}
РЕДАКТИРОВАТЬ:
Есть ли способ сделать это в модели или в представлении вместо (не используя другой переменная), как prefetch_related? Потому что метод в шаблоне генерирует несколько дубликатов SQL запросов.
blockquote>IIRC вы можете применить
prefetch_related
иselect_related
к набору запросовProject
в вашем представлении, т.е.qs = Project.objects.prefetch_related(....).select_related(...) current_project = qs.get(pk=...)
, но это из памяти, и у меня нет времени перепроверить это прямо сейчас ...