← All schemas
Schema Library

Django Auth Database Schema Diagram

Django's built-in auth app creates a set of authentication tables when you run migrate: auth_user, auth_group, auth_permission, plus the many-to-many join tables auth_user_groups, auth_user_user_permissions, and auth_group_permissions. This diagram maps the full schema — including how permissions link to content types through django_content_type, and how admin actions are logged in django_admin_log.

Tables
9
Core table
auth_user
Join tables
3
* 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 * 1 auth_user id PK password last_login is_superuser username first_name last_name email is_staff is_active date_joined auth_group id PK name auth_permission id PK name content_type_id FK codename auth_user_groups id PK user_id FK group_id FK auth_user_user_permissions id PK user_id FK permission_id FK auth_group_permissions id PK group_id FK permission_id FK django_content_type id PK app_label model django_admin_log id PK action_time object_id object_repr action_flag change_message content_type_id FK user_id FK django_session session_key PK session_data expire_date

Tables in the Django schema

ColumnTypeNullableKey
auth_user
idintegerNoPK
passwordvarchar(128)No
last_logintimestampYes
is_superuserbooleanNo
usernamevarchar(150)No
first_namevarchar(150)No
last_namevarchar(150)No
emailvarchar(254)Yes
is_staffbooleanNo
is_activebooleanNo
date_joinedtimestampNo
auth_group
idintegerNoPK
namevarchar(150)No
auth_permission
idintegerNoPK
namevarchar(255)No
content_type_idintegerNo
codenamevarchar(100)No
auth_user_groups
idintegerNoPK
user_idintegerNo
group_idintegerNo
auth_user_user_permissions
idintegerNoPK
user_idintegerNo
permission_idintegerNo
auth_group_permissions
idintegerNoPK
group_idintegerNo
permission_idintegerNo
django_content_type
idintegerNoPK
app_labelvarchar(100)No
modelvarchar(100)No
django_admin_log
idintegerNoPK
action_timetimestampNo
object_idtextYes
object_reprvarchar(200)No
action_flagsmallintNo
change_messagetextNo
content_type_idintegerYes
user_idintegerNo
django_session
session_keyvarchar(40)NoPK
session_datatextNo
expire_datetimestampNo

Frequently asked questions

What tables does Django auth create?

Django's auth app creates auth_user, auth_group, auth_permission, and three many-to-many join tables: auth_user_groups, auth_user_user_permissions, and auth_group_permissions.

How do Django users relate to groups and permissions?

Users relate to groups through the auth_user_groups join table and to permissions through auth_user_user_permissions. Groups relate to permissions through auth_group_permissions. All three are many-to-many relationships.

Visualize your own database

Paste your PostgreSQL connection string and get an interactive ER diagram of your own schema in under 10 seconds. No signup required.

Try it free →