Django auth model Error: name 'User' is not defined
24,125
You are referencing User
here: author = models.ForeignKey(User)
, but forgot to import User
in your models.py
Put this at the top of your models.py
file
from django.contrib.auth.models import User
EDIT:
An alternate (newer) way of importing user model - for configurable user models would be:
from django.contrib.auth import get_user_model
User = get_user_model()
The configured User model returned would be based on the setting AUTH_USER_MODEL
Author by
Thankyou
Updated on July 09, 2022Comments
-
Thankyou almost 2 years
1. The error codes:
NameError: name 'User' is not defined
>>> myproject ME$ python manage.py shell NameError: name 'User' is not defined myproject ME$ python manage.py shell Python 2.7.5 (default, Mar 9 2014, 22:15:05) [GCC 4.2.1 Compatible Apple LLVM 5.0 (clang-500.0.68)] on darwin Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from django.contrib.auth.models import User >>> user = User.objects.create_user('john', '[email protected]', 'johnpassword') >>> user.is_staff = True >>> user.save() >>> User.objects.all() [<User: superuser>, <User: john>] >>> from django.db import models >>> from django.contrib.auth.models import User >>> >>> >>> from django.conf import settings >>> user = models.ForeignKey(settings.AUTH_USER_MODEL) >>> User.objects.all() [<User: superuser>, <User: john>] >>> user.save() Traceback (most recent call last): File "<console>", line 1, in <module> AttributeError: 'ForeignKey' object has no attribute 'save' >>> from django.conf import settings
Do you have suggestions?
What can I do?
Is there a way to check whether the user auth model was imported? If yes, what can I do in case it was not correctly imported?
Is there a problem with my bookmarks app?
2. My models.py:
from django.db import models class Bookmark(models.Model): author = models.ForeignKey(User) title = models.CharField(max_length=200, blank=True, default="") url = models.URLField() timestamp = models.DateTimeField(auto_now_add=True) def __unicode__(self): return "%s by %s" % (self.url, self.author.username) class Tag(models.Model): bookmarks = models.ManyToManyField(Bookmark) slug = models.CharField(max_length=50, unique=True) def __unicode__(self): return self.slug