Во многих отношениях все решения этого будут больше проблем, чем они того стоят. Этот квалифицируется как взломать. Обновление django может оставить вас в напряжении, если они изменят способ реализации create_update. Для простоты я предполагаю, что вы пытаетесь установить пользователя по умолчанию, а не принудительно заставлять пользователя войти в систему.
Написать контекстный процессор:
from django.views.generic.create_update import get_model_and_form_class
def form_user_default(request):
if request.method == 'GET':
model, custom_form = get_model_and_form_class(Post,None)
custom_form.author = request.user
return {'form':custom_form}
else: return {}
Что это будет делать, так это переопределить объект формы, который create_update передает в шаблон. Технически, это делает воссоздание формы после того, как это сделал вид по умолчанию.
Тогда в вашем url conf:
url(r'pattern_to_match', 'django.views.generic.create_update.create_object', kwargs={'context_processors':form_user_default})
Опять же, мне пришлось углубиться в исходный код, чтобы понять, как это сделать. Возможно, лучше всего написать собственный вид (но включить как можно больше пользовательских объектов Django). Для этого нет простого способа «по умолчанию», потому что в парадигме django формы более тесно связаны со слоем модели, чем с представлениями, и только представления знают объект запроса.