Opened 8 years ago
Last modified 7 months ago
#28461 assigned 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 )
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.
Change History (5)
by , 8 years ago
| Attachment: | local_history.patch added |
|---|
comment:1 by , 8 years ago
| Has patch: | set |
|---|
comment:2 by , 8 years ago
| Patch needs improvement: | set |
|---|---|
| Summary: | Can't create superuser with ForeignKey required field → create_superuser crashes with a ForeignKey to a CharField in REQUIRED_FIELDS |
| Triage Stage: | Unreviewed → Accepted |
I can reproduce the crash, however, the proposed patch breaks the test_fields_with_fk_interactive test from #21832.
comment:3 by , 8 years ago
| Summary: | create_superuser crashes with a ForeignKey to a CharField in REQUIRED_FIELDS → createsuperuser crashes with a ForeignKey to a CharField in REQUIRED_FIELDS |
|---|
comment:4 by , 8 years ago
| Description: | modified (diff) |
|---|---|
| Has patch: | unset |
| Patch needs improvement: | unset |
Note:
See TracTickets
for help on using tickets.
Possible solution