django - raise TypeError("%s() 得到了一个意外的关键字参数 '%s'"
问题描述
我正在尝试覆盖save
Django 模型的方法并发送额外的关键字参数。即使代码看起来不错,但我得到了这个错误
raise TypeError("%s() got an unexpected keyword argument '%s'" % (cls. name , kwarg)) TypeError: Student() got an unexpected keyword argument 'registration_no'
我的模型:
class StudentManager(models.Manager):
#check the availability of student
def CheckRegistration(self, name, registration_no):
print('inside CHECK REGISTRATION')
if Student.objects.filter(name=name).exists():
students = Student.objects.filter(name=name)
for student in students:
student_id = student.id
print(str(student_id))
registrations = Registration.objects.filter(student=student_id)
for registration in registrations:
print(str(registration))
if registration.registration_no==registration_no:
raise ValueError('student with same registration number already exist')
else:
print('registration possible')
return 1
class Student(models.Model):
name = models.CharField(max_length=300)
sex = models.CharField(choices=SEX_CHOICES,max_length=255, null=True)
Category = models.CharField(max_length=100, null=True)
objects = StudentManager()
def __str__(self):
return self.name
def save(self, *args, **kwargs):
if(kwargs):
name = kwargs.get('name')
registration_no = kwargs.get('registration_no')
Student.objects.CheckRegistration(name, registration_no)
super(Student, self).save(*args, **kwargs)
错误回溯
>>>Student.objects.create(name='AA',registrtion_no='BB')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/tluanga/.local/share/virtualenvs/alpha-back-0LxWEk3n/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/tluanga/.local/share/virtualenvs/alpha-back-0LxWEk3n/lib/python3.6/site-packages/django/db/models/query.py", line 420, in create
obj = self.model(**kwargs)
File "/home/tluanga/.local/share/virtualenvs/alpha-back-0LxWEk3n/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: Student() got an unexpected keyword argument 'registrtion_no'
解决方案
看起来你在写“registrtion_no”而不是“registration_no”时有错字,所以改用这个:
Student.objects.create(name='AA',registration_no='BB')
希望这可以帮助!
如果没有,请发布您的“创建”功能代码
推荐阅读
- c# - 在使用属性注入时,我们如何知道什么是“本地默认值”?
- swift - 合并:取消一组
或删除其所有存储的对象以停止订阅 - upload - 在 env Gradle7+ 中使用 Mavan-Pulish 上传工件到 Nexus 失败
- python - 如何在 python 中删除表的某些行?
- javascript - React - FlatList extraData 不适用于记忆/纯组件
- javascript - 如何并行运行 2 个等待循环?
- bash - Linux:将file1中的字符id分配给file2的两列,f2_col1和f2_col2,而不改变file2中的行顺序
- python - 如何在数据框中查找特定值并返回索引?
- google-analytics - 标签没有被触发,因为我滚动时加载了该项目
- visual-studio-2022 - Visual Studio 2022 - 进程外加载和评估