{"id":21143,"library":"django-currentuser","title":"django-currentuser","description":"A Django middleware and model mixin that automatically saves the current request user as the creator/last modifier of model instances. Version 0.10.0 supports Django 4.2-5.1, Python >=3.10. Released roughly twice per year.","status":"active","version":"0.10.0","language":"python","source_language":"en","source_url":"https://github.com/zsoldosp/django-currentuser","tags":["django","middleware","current user","creator","modifier"],"install":[{"cmd":"pip install django-currentuser","lang":"bash","label":"Default pip install"}],"dependencies":[{"reason":"Primary framework; version >=4.2 required","package":"django","optional":false}],"imports":[{"note":"No common mistake; always import from middleware module.","wrong":"","symbol":"get_current_user","correct":"from django_currentuser.middleware import get_current_user"},{"note":"In older versions the field was in `fields` module; moved to `db.models` in v0.5+.","wrong":"from django_currentuser.fields import CurrentUserField","symbol":"CurrentUserField","correct":"from django_currentuser.db.models import CurrentUserField"},{"note":"Must be added to MIDDLEWARE after AuthenticationMiddleware.","wrong":"","symbol":"CurrentUserMiddleware","correct":"from django_currentuser.middleware import CurrentUserMiddleware"}],"quickstart":{"code":"# settings.py\nINSTALLED_APPS = [\n    'django.contrib.admin',\n    'django.contrib.auth',\n    ...\n]\nMIDDLEWARE = [\n    'django.contrib.sessions.middleware.SessionMiddleware',\n    'django.contrib.auth.middleware.AuthenticationMiddleware',\n    'django_currentuser.middleware.CurrentUserMiddleware',\n    ...\n]\n\n# models.py\nfrom django.db import models\nfrom django_currentuser.db.models import CurrentUserField\n\nclass Article(models.Model):\n    title = models.CharField(max_length=255)\n    created_by = CurrentUserField()\n    updated_by = CurrentUserField(on_update=True)\n\n# migrate and use normally\nfrom django_currentuser.middleware import get_current_user\nuser = get_current_user()  # returns request.user or None","lang":"python","description":"Configure middleware and use CurrentUserField in models to auto-populate creator/updater."},"warnings":[{"fix":"Add null=True, blank=True to the field or ensure get_current_user() never returns None.","message":"CurrentUserField on_update=True requires the field to be nullable or have a default, otherwise saving an existing object without an explicit user will fail.","severity":"gotcha","affected_versions":"all"},{"fix":"Call 'from django_currentuser.middleware import set_current_user; set_current_user(user)' before accessing get_current_user().","message":"Using get_current_user() outside of a request (e.g., in management commands, tests, or Celery tasks) returns None unless you manually set the thread-local user.","severity":"gotcha","affected_versions":"all"},{"fix":"Use 'from django_currentuser.db.models import CurrentUserField'.","message":"The import path 'from django_currentuser.fields import CurrentUserField' is deprecated since v0.5.0.","severity":"deprecated","affected_versions":">=0.5.0, <0.10.0"},{"fix":"Override bulk operations to set the user explicitly, or avoid bulk create/update on models with CurrentUserField.","message":"The update_on_save feature does not work with bulk_create or bulk_update; the current user is only set on individual model save().","severity":"gotcha","affected_versions":"all"}],"env_vars":null,"last_verified":"2026-04-27T00:00:00.000Z","next_check":"2026-07-26T00:00:00.000Z","problems":[{"fix":"Use 'from django_currentuser.middleware import get_current_user'.","cause":"Importing from the top-level package instead of the middleware module.","error":"AttributeError: module 'django_currentuser' has no attribute 'get_current_user'"},{"fix":"Move user retrieval inside functions or views, or use the middleware pattern.","cause":"Calling get_current_user() before Django settings are fully loaded (e.g., in module-level code).","error":"django.core.exceptions.ImproperlyConfigured: Requested setting INSTALLED_APPS, but settings are not configured."},{"fix":"Upgrade to django-currentuser >=0.5.3 (Django 3.2+). If still present, ensure MIDDLEWARE order has AuthenticationMiddleware before CurrentUserMiddleware.","cause":"Older versions of django-currentuser didn't resolve lazy user objects properly.","error":"TypeError: Field 'id' expected a number but got <SimpleLazyObject>"},{"fix":"Set null=True on the field or set a fallback user via set_current_user().","cause":"CurrentUserField(on_update=True) is called when get_current_user() returns None (e.g., outside request).","error":"AttributeError: 'NoneType' object has no attribute 'pk'"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}