Я думаю , этот отрывок делает точно, что Вы хотите. Это дает Вам подкласс Формы, который позволяет Вам декларативно подразделять свою форму на fieldsets и выполнять итерации через них в Вашем шаблоне.
Обновление: тот отрывок с тех пор стал частью django-form-utils
Начиная с определенного количества записей, предикат IN
для SELECT
становится быстрее, чем для списка констант.
См. эта статья в моем блоге для сравнения производительности:
Если столбец, используемый в запросе в предложении IN
, проиндексирован, например:
SELECT *
FROM table1
WHERE unindexed_column IN
(
SELECT indexed_column
FROM table2
)
, то этот запрос просто оптимизируется до EXISTS
(который использует только одну запись для каждой записи из table1
)
К сожалению, MySQL
является не может выполнять HASH SEMI JOIN
или MERGE SEMI JOIN
, что еще более эффективно (особенно если оба столбца проиндексированы).
Почему вы сначала извлекаете идентификаторы? Вам, вероятно, следует просто присоединиться к столам. Если вы используете идентификаторы для чего-то еще, вы можете вставить их во временную таблицу раньше и использовать эту таблицу для соединения.