How to use 'User' as foreign key in Django 1.5 How to use 'User' as foreign key in Django 1.5 django django

How to use 'User' as foreign key in Django 1.5


Exactly in Django 1.5 the AUTH_USER_MODEL setting was introduced, allowing using a custom user model with auth system.

If you're writing an app that's intended to work with projects on Django 1.5 through 1.10 and later, this is the proper way to reference user model (which can now be different from django.contrib.auth.models.User):

class UserProfile(models.Model):    user = models.ForeignKey(settings.AUTH_USER_MODEL)
  • See docs for more details.

In case you're writing a reusable app supporting Django 1.4 as well, then you should probably determine what reference to use by checking Django version, perhaps like this:

import djangofrom django.conf import settingsfrom django.db import modelsdef get_user_model_fk_ref():    if django.VERSION[:2] >= (1, 5):        return settings.AUTH_USER_MODEL    else:        return 'auth.User'class UserProfile(models.Model):    user = models.ForeignKey(get_user_model_fk_ref())


Change this:

user = models.ForeignKey('User', unique=True)

to this:

user = models.ForeignKey(User, unique=True)