Хм, в 2.x у sys.stdin нет таких методов. И итерировать по нему нельзя. Или я плохо искал. Есть .readline(), но мне кажется, это тот же raw_input() по скорости.
3. Тут точно m2m лучшее решение? Не лучше ли сделать метод indicators, который будет возвращать нужный queryset? Минус JOIN в запросе. Хотя тут надо смотреть, что менее затратно.
2. Нет, на производительность не влияет, это просто сортировка по умолчанию. Имеет смысл ставить всегда, потому что эта сортировка применяется и в админке, и в ModelChoiceField, и еще где-нибудь, так что лучше задать ее явно. Если применяется много разных сортировок, то лучше задать их через методы менеджера. Это не догма, но мне кажется, что действия бд-уровня должны выполняться в классе модели, и не выноситься во view.
3. Почти всегда достаточно наследования шаблонов. Т. е. создается шаблон с блоками head, content, footer, а в дочернем шаблоне нужные места переопределяются. Если требуется какая-то более сложная логика, то лучше создать новый тег.
Но правильней всего сначала поискать, не решал ли уже кто-нибудь эту проблему. Вот хорошее меню (выделение выбранных пунктов требует дополнительных действий, но в документации все расписано), вот неплохие хлебные крошки. Да, и вот отличный сайт, с которого можно начинать поиск готовых решений.
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.