How-to-simply...

Django admin: Using ModelAdmin to default to currently logged in user

  • 1 Import:
    from django import forms
    from django.contrib.auth import models
  • 2 Add this into your admin class:
    def get_form(self, req, obj=None, **kwargs):
    # save the currently logged in user for later
    self.current_user = req.user
    return super(EventAdmin, self).get_form(req, obj, **kwargs)
  • 3 Add this into the same admin class:
    def formfield_for_dbfield(self, field, **kwargs):
    if field.name == 'creator':
    queryset = models.User.objects.all()
    return forms.ModelChoiceField(
    queryset=queryset, initial=self.current_user.id)
    return super(EventAdmin, self).formfield_for_dbfield(field, **kwargs)

References