django - 异常值:__init__() 得到了一个意外的关键字参数“limit_choices_to”
问题描述
class Account(models.Model):
username = models.OneToOneField(User, on_delete=models.CASCADE)
#email = models.EmailField(verbose_name="email", max_length=60, unique=True)
contact = models.CharField(max_length=30, unique=True)
fathers_name = models.CharField(max_length=30)
date_of_birth = models.DateField(null=True)
address = models.TextField(max_length=250)
aadhar_number =models.CharField(max_length=14)
pan_number = models.CharField(max_length=14)
education = models.TextField(max_length=250)
salary = models.IntegerField( default=0)
department_id = models.IntegerField(default= 0)
designation_id = models.IntegerField(default=0)
GENDER_CHOICES = ((0, 'Male'), (1, 'Female'))
gender = models.IntegerField(choices=GENDER_CHOICES)
MARITAL_STATUS_CHOICES = ((0, 'Married'), (1, 'Unmarried'))
marital_status = models.IntegerField(choices=MARITAL_STATUS_CHOICES)
USERNAME_FIELD = 'username'
我已将我的 Account 类扩展映射到 User,现在当我尝试添加新帐户时,我的应用程序会根据我的 Account 模型中是否有 USERNAME_FIELD 给出以下两个错误。
- 当我没有 USERNAME_FIELD 时:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/ems/account/add/
Django Version: 3.0.6
Python Version: 3.8.3
Installed Applications:
['ems',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 607, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\sites.py", line 231, in inner
return view(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\decorators\debug.py", line 76, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\admin.py", line 99, in add_view
return self._add_view(request, form_url, extra_context)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\admin.py", line 120, in _add_view
username_field = self.model._meta.get_field(self.model.USERNAME_FIELD)
Exception Type: AttributeError at /admin/ems/account/add/
Exception Value: type object 'Account' has no attribute 'USERNAME_FIELD'
- 当我添加 USERNAME_FIELD 时,它显示如下:
Environment:
Request Method: GET
Request URL: http://127.0.0.1:8000/admin/ems/account/add/
Django Version: 3.0.6
Python Version: 3.8.3
Installed Applications:
['ems',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Traceback (most recent call last):
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 607, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\decorators\cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\sites.py", line 231, in inner
return view(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\views\decorators\debug.py", line 76, in sensitive_post_parameters_wrapper
return view(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\admin.py", line 99, in add_view
return self._add_view(request, form_url, extra_context)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\admin.py", line 126, in _add_view
return super().add_view(request, form_url, extra_context)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 1638, in add_view
return self.changeform_view(request, None, form_url, extra_context)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 43, in _wrapper
return bound_method(*args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\utils\decorators.py", line 130, in _wrapped_view
response = view_func(request, *args, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 1522, in changeform_view
return self._changeform_view(request, object_id, form_url, extra_context)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 1555, in _changeform_view
ModelForm = self.get_form(request, obj, change=not add)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\auth\admin.py", line 80, in get_form
return super().get_form(request, obj, **defaults)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 702, in get_form
return modelform_factory(self.model, **defaults)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\forms\models.py", line 554, in modelform_factory
return type(form)(class_name, (form,), form_class_attrs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\forms\models.py", line 252, in __new__
fields = fields_for_model(
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\forms\models.py", line 178, in fields_for_model
formfield = formfield_callback(f, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 154, in formfield_for_dbfield
formfield = self.formfield_for_foreignkey(db_field, request, **kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\contrib\admin\options.py", line 241, in formfield_for_foreignkey
return db_field.formfield(**kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\fields\related.py", line 1027, in formfield
return super().formfield(**kwargs)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\fields\related.py", line 957, in formfield
return super().formfield(**{
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\fields\related.py", line 419, in formfield
return super().formfield(**defaults)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\db\models\fields\__init__.py", line 927, in formfield
return form_class(**defaults)
File "C:\Users\ACER\AppData\Local\Programs\Python\Python38-32\lib\site-packages\django\forms\fields.py", line 215, in __init__
super().__init__(**kwargs)
Exception Type: TypeError at /admin/ems/account/add/
Exception Value: __init__() got an unexpected keyword argument 'limit_choices_to'
解决方案
尝试from django.contrib.auth.models import BaseUser
并继承它。
来源在这里
推荐阅读
- graphics - 使用贝塞尔曲线绘制可变宽度路径
- flutter - CachedNetworkImage 卡在进行中状态
- reactjs - 与 MUI 的 useStyles() 反应,给我一个钩子规则违规
- css - 如何将 Slick 幻灯片中的幻灯片高度调整为相等?
- javascript - Javascript - 计算和比较
- ios - 用于字典条目的 SwiftUI 结构
- c++ - C++:对象将 Lambda 存储到结构中,然后调用该函数
- node.js - 为什么我的 Windows 10 计算机上的 Node.js npm 如此之慢
- android - Android 模拟器 (AVD) 在 Ubuntu 20.4 LTS 上启动后立即崩溃
- javascript - 数组 some 在嵌套数组中不起作用