嘿,我是Django的新手,我正在try 设置一个非常基本的RESTAPI.我正在使用djoser处理身份验证.但是,我想使用自定义用户模型.其中1.唯一字段是邮箱(而不是用户名),2.它有一个额外字段.
我试着遵循这两个指南,
https://testdriven.io/blog/django-custom-user-model/
我这样创建模型,
class MyUser(AbstractUser):
username = None
email = models.EmailField(_('email address'), unique=True)
DIET_CHOICES = (
('vegan', 'Vegan'),
('vegetarian', 'Vegetarian'),
('meat', 'Meat')
)
diet = models.CharField(max_length=10, choices=DIET_CHOICES)
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = [diet]
objects = CustomUserManager()
def __str__(self):
return self.email
使用CustomUserManager(),如https://testdriven.io/blog/django-custom-user-model/所示.
我还在AUTH\u user\u模型中注册了该用户.
Traceback (most recent call last):
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/venv/lib/python3.9/site-packages/django/db/models/options.py", line 672, in get_field
return self.fields_map[field_name]
KeyError: <django.db.models.fields.CharField: diet>
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/manage.py", line 22, in <module>
main()
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 446, in execute_from_command_line
utility.execute()
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/venv/lib/python3.9/site-packages/django/core/management/__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/venv/lib/python3.9/site-packages/django/core/management/base.py", line 406, in run_from_argv
parser = self.create_parser(argv[0], argv[1])
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/venv/lib/python3.9/site-packages/django/core/management/base.py", line 369, in create_parser
self.add_arguments(parser)
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/venv/lib/python3.9/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 60, in add_arguments
field = self.UserModel._meta.get_field(field_name)
File "/home/frederik/Documents/andet/madklubTests/2madklubDjango/venv/lib/python3.9/site-packages/django/db/models/options.py", line 674, in get_field
raise FieldDoesNotExist(
django.core.exceptions.FieldDoesNotExist: MyUser has no field named 'MyUser.MyUser.diet'
似乎创建超级用户可能不是一个特定的问题,而是用户注册的一般问题.然而,我不知道为什么会发生这种情况.