Здравствуйте, пытаюсь расширить дефолтную модель User следующим образом:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE),
avatar = models.FilePathField(path='/static/images/avatars', max_length=250, blank=True)
vk_token = models.CharField(max_length=256, blank=True)
fb_token = models.CharField(max_length=256, blank=True)
tw_token = models.CharField(max_length=256, blank=True)
od_token = models.CharField(max_length=256, blank=True)
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
instance.profile.save()
При создании суперюзера получаю такое: TypeError: Profile() got an unexpected keyword argument 'user'
python3 ./manage.py createsuperuser
Username (leave blank to use 'mazahaler'): admin
Email address: myemail@gmail.com
Password:
Password (again):
Traceback (most recent call last):
File "./manage.py", line 21, in <module>
main()
File "./manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 381, in execute_from_command_line
utility.execute()
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/core/management/__init__.py", line 375, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/core/management/base.py", line 323, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 61, in execute
return super().execute(*args, **options)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/core/management/base.py", line 364, in execute
output = self.handle(*args, **options)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 156, in handle
self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/contrib/auth/models.py", line 162, in create_superuser
return self._create_user(username, email, password, **extra_fields)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/contrib/auth/models.py", line 145, in _create_user
user.save(using=self._db)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/contrib/auth/base_user.py", line 66, in save
super().save(*args, **kwargs)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/db/models/base.py", line 741, in save
force_update=force_update, update_fields=update_fields)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/db/models/base.py", line 790, in save_base
update_fields=update_fields, raw=raw, using=using,
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 175, in send
for receiver in self._live_receivers(sender)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/dispatch/dispatcher.py", line 175, in <listcomp>
for receiver in self._live_receivers(sender)
File "/home/mazahaler/Documents/Projects/English_app/blog/models.py", line 43, in create_user_profile
Profile.objects.create(user=instance)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/db/models/manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/db/models/query.py", line 420, in create
obj = self.model(**kwargs)
File "/home/mazahaler/.local/lib/python3.6/site-packages/django/db/models/base.py", line 501, in __init__
raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls.__name__, kwarg))
TypeError: Profile() got an unexpected keyword argument 'user'
Почему джанго не видит поле user, оно ведь определено в модели Profile?
Хелп.
Updated 22 May 2019, 18:57 by vxarlanchuk.