Гораздо быстрее и дешевле в плане ресурсов сделать выборку из таблицы связей по пользователю
А сколько у вас документов планируется? Выиграша в потраченом времени не вижу, т.к. вам прийдется писать кастомные менджеры, кастомные формы, которые сохраняют создателя, и вся отвественность что создатель будет только один тоже ложится на код. А если проект постоянно дорабатывается, то словить баг на продакшине с двумя создателя будет очень не приятно. Хотя если покроете все хорошенько тестами...
Денормализация базы иногда выглядит привлекательно, но обычно получаете столько гемороя... Не зря ведь её придумали.
нужны все документы, в которых пользователь хоть как-то участвует
Document.objects.filter(Q(creator=user)|Q(recipients=user))
Чтобы понятнее - нужно, чтобы все объекты типа User хранились в таблице связей, но с разными атрибутами (например, type). но в форме - нужно чтобы одни отображались как список и имели множественную привязку, а другие - одиночную привязку (типа как ForeignKey).
Ничего не посоветую, кроме как использовать ModelChoiceField с кастомный queryset.
Updated 18 July 2011, 18:20 by alerion.