Set the current user in a Django CreateView
May 25, 2021 ‐ 1 min read
Often when creating a model via a form in Django you want to relate that object to the currently logged in user, or the business to which the current user relates to in its turn.
You may set the current user for a new object in the form_valid
method of a CreateView
. Make sure to require a login, otherwise there is no current user to be set.
from django.contrib.auth.mixins import LoginRequiredMixin
from django.views.generic.edit import CreateView
from projects.models import Project
class CredentialsCreateView(LoginRequiredMixin, CreateView):
model = Project
fields = ['title']
def form_valid(self, form):
form.instance.user = self.request.user
return super().form_valid(form)