Opened 7 years ago

Last modified 7 years ago

#28461 new Cleanup/optimization

createsuperuser crashes with a ForeignKey to a CharField in REQUIRED_FIELDS — at Version 4

Reported by: Kirill B. Owned by: nobody
Component: Documentation Version: 1.11
Severity: Normal Keywords:
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description (last modified by Kirill B.)

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: test@example.com
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.

PR

Change History (5)

by Kirill B., 7 years ago

Attachment: local_history.patch added

Possible solution

comment:1 by Kirill B., 7 years ago

Has patch: set

comment:2 by Tim Graham, 7 years ago

Patch needs improvement: set
Summary: Can't create superuser with ForeignKey required fieldcreate_superuser crashes with a ForeignKey to a CharField in REQUIRED_FIELDS
Triage Stage: UnreviewedAccepted

I can reproduce the crash, however, the proposed patch breaks the test_fields_with_fk_interactive test from #21832.

comment:3 by Tim Graham, 7 years ago

Summary: create_superuser crashes with a ForeignKey to a CharField in REQUIRED_FIELDScreatesuperuser crashes with a ForeignKey to a CharField in REQUIRED_FIELDS

comment:4 by Kirill B., 7 years ago

Description: modified (diff)
Has patch: unset
Patch needs improvement: unset
Note: See TracTickets for help on using tickets.
Back to Top