python - 我正在尝试在 django 中制作模型。但错误。为什么?
问题描述
我是新手编码员。我正在尝试制作模型。但是当我成为超级用户时,总是出现错误这是我的代码。我使用 abstractbaseuser 并创建帐户。我的帐户包含用户名、用户 ID、公司、公司代码。不使用密码。但我不知道如何解决这个错误 粗体
from django.contrib.auth.models import(BaseUserManager, AbstractBaseUser, PermissionsMixin)
from django.db import models
from django.utils import timezone
from django.utils.translation import ugettext_lazy as _
class UserManager(BaseUserManager):
def create_account(self, username, userid, company, company_code, password=None):
if not username:
raise ValueError(_('Users must have an name!'))
user = self.model(
Name=username,
UserId = userid,
Company= company,
Code = company_code,
)
user.set_password(password)
user.save(self._db)
return user
def create_superuser(self, username, userid, company, company_code, password):
user = self.create_user(
Name=username,
UserId = userid,
Company = company,
Code = company_code,
password=password,
)
user.Name = True
user.is_superuser = True
user.is_admin = True
user.is_staff = True
user.save(self._db)
return user
class User(AbstractBaseUser):
Name = models.CharField(max_length=10, unique=True)
UserId = models.CharField(max_length=100, unique=True)
Company = models.CharField(max_length=10)
Code = models.CharField(max_length=100)
Created_date = models.DateTimeField(auto_now_add=True)
is_admin = models.BooleanField(default=False)
is_active = models.BooleanField(default=True)
class Meta:
db_table = 'user'
objects = UserManager()
USERNAME_FIELD = 'Name'
REQUIRED_FIELDS = ['UserId', 'Company', 'Code']
def __str__(self):
return self.Name
def get_full_name(self):
return self.Name
def get_short_name(self):
return self.Name
@property
def is_staff(self):
"Is the user a member of staff?"
return self.is_superuser
这是我命令 createsuperuser 时的错误
File "manage.py", line 21, in <module>
main()
File "manage.py", line 17, in main
execute_from_command_line(sys.argv)
File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 401, in execute_from_command_line
utility.execute()
File "/usr/local/lib/python3.7/site-packages/django/core/management/__init__.py", line 395, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 328, in run_from_argv
self.execute(*args, **cmd_options)
File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 79, in execute
return super().execute(*args, **options)
File "/usr/local/lib/python3.7/site-packages/django/core/management/base.py", line 369, in execute
output = self.handle(*args, **options)
File "/usr/local/lib/python3.7/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 189, in handle
self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
TypeError: create_superuser() got an unexpected keyword argument 'Name'
解决方案
你用错误的参数调用它。在 youcreate_superuser
中,你写:
def create_superuser(self, username, userid, company, company_code, password):
user = self.create_user(
Name=username,
UserId=userid,
Company=company,
Code=company_code,
password=password,
)
# …
但是您的create_user
方法没有 Name
参数等。您将这些传递为username
,userid
等:
def create_superuser(self, username, userid, company, company_code, password):
user = self.create_user(
username=username,
userid=userid,
bompany=company,
company_code=company_code,
password=password,
)
# …
注意:通常 Django 模型中的字段名称是用 snake_case 编写的,而不是PerlCase,所以它应该是:
UserId
而不是.user_id
推荐阅读
- docker - 为什么无法从外部连接到我的容器
- google-sheets-formula - =IMPORTXML 不导入预期的内容
- java - "No operations allowed after connection closed " using Dart and Java
- python - 为什么 Django DoesNotExist 擦除其他对象?
- mysql - MySQL - 从变量设置 DESC LIMIT
- python - script does not print variable value consistently
- javascript - 如何根据变量在剃须刀页面中有条件地呈现 div 类?
- python - Which way is the best for running background processes?
- ffmpeg - 使用 FFMpeg 将网页流式传输到 YouTube
- python - Trying to run Python using Reticulate giving a module not found error, but it is installed