#28461: createsuperuser crashes with a ForeignKey to a CharField in
REQUIRED_FIELDS
------------------------------+------------------------------------
Reporter: Kirill B. | Owner: nobody
Type: Bug | Status: new
Component: contrib.auth | Version: 1.11
Severity: Normal | Resolution:
Keywords: | Triage Stage: Accepted
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
------------------------------+------------------------------------
Changes (by Kirill B.):
* needs_better_patch: 1 => 0
* has_patch: 1 => 0
Old description:
> These are my models:
>
> {{{
> from uuid import uuid4
>
> from django.contrib.auth.models import AbstractUser
> from django.db import models
>
> class Company(models.Model):
> name = models.CharField(max_length=64, primary_key=True)
>
> class User(AbstractUser):
> uuid = models.UUIDField(primary_key=True, editable=False,
> default=uuid4)
> company = models.ForeignKey(Company)
>
> REQUIRED_FIELDS = ['email', 'company']
> }}}
>
> When I run `manage.py createsuperuser` I got this result:
>
> {{{
> Username: superuser
> Email address: [email protected]
> Company (Company.name): TEST
> Password:
> Password (again):
> Traceback (most recent call last):
> File "manage.py", line 22, in <module>
> execute_from_command_line(sys.argv)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/core/management/__init__.py", line 363, in
> execute_from_command_line
> utility.execute()
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/core/management/__init__.py", line 355, in execute
> self.fetch_command(subcommand).run_from_argv(self.argv)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/core/management/base.py", line 283, in run_from_argv
> self.execute(*args, **cmd_options)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/contrib/auth/management/commands/createsuperuser.py",
> line 63, in execute
> return super(Command, self).execute(*args, **options)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/core/management/base.py", line 330, in execute
> output = self.handle(*args, **options)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/contrib/auth/management/commands/createsuperuser.py",
> line 183, in handle
> self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/contrib/auth/models.py", line 170, in create_superuser
> return self._create_user(username, email, password, **extra_fields)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/contrib/auth/models.py", line 151, in _create_user
> user = self.model(username=username, email=email, **extra_fields)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/contrib/auth/base_user.py", line 68, in __init__
> super(AbstractBaseUser, self).__init__(*args, **kwargs)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/db/models/base.py", line 554, in __init__
> _setattr(self, field.name, rel_obj)
> File "/Users/ookami/venv/swportal/lib/python3.5/site-
> packages/django/db/models/fields/related_descriptors.py", line 216, in
> __set__
> self.field.remote_field.model._meta.object_name,
> ValueError: Cannot assign "'TEST'": "User.company" must be a "Company"
> instance.
>
> }}}
New description:
These are my models:
{{{
from uuid import uuid4
from django.contrib.auth.models import AbstractUser
from django.db import models
class Company(models.Model):
name = models.CharField(max_length=64, primary_key=True)
class User(AbstractUser):
uuid = models.UUIDField(primary_key=True, editable=False,
default=uuid4)
company = models.ForeignKey(Company)
REQUIRED_FIELDS = ['email', 'company']
}}}
When I run `manage.py createsuperuser` I got this result:
{{{
Username: superuser
Email address: [email protected]
Company (Company.name): TEST
Password:
Password (again):
Traceback (most recent call last):
File "manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/core/management/__init__.py", line 363, in
execute_from_command_line
utility.execute()
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/core/management/__init__.py", line 355, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/core/management/base.py", line 283, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/contrib/auth/management/commands/createsuperuser.py", line
63, in execute
return super(Command, self).execute(*args, **options)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/core/management/base.py", line 330, in execute
output = self.handle(*args, **options)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/contrib/auth/management/commands/createsuperuser.py", line
183, in handle
self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/contrib/auth/models.py", line 170, in create_superuser
return self._create_user(username, email, password, **extra_fields)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/contrib/auth/models.py", line 151, in _create_user
user = self.model(username=username, email=email, **extra_fields)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/contrib/auth/base_user.py", line 68, in __init__
super(AbstractBaseUser, self).__init__(*args, **kwargs)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/db/models/base.py", line 554, in __init__
_setattr(self, field.name, rel_obj)
File "/Users/ookami/venv/swportal/lib/python3.5/site-
packages/django/db/models/fields/related_descriptors.py", line 216, in
__set__
self.field.remote_field.model._meta.object_name,
ValueError: Cannot assign "'TEST'": "User.company" must be a "Company"
instance.
}}}
[https://github.com/django/django/pull/8846 PR]
--
--
Ticket URL: <https://code.djangoproject.com/ticket/28461#comment:4>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/067.90bf0ba771f30cc32bd4d26e95272851%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.