[英]Field 'id' expected a number but got <QuerySet [<Department: GEE>]>
I can't find the mistake here.我在这里找不到错误。 I saw some similar questions but still can't fix it.我看到了一些类似的问题,但仍然无法解决。
here is my models.py这是我的models.py
class Department(models.Model):
name = models.CharField(max_length=100)
class CustomUser(AbstractUser):
department = models.ManyToManyField(Department, blank=True)
class Student(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, primary_key=True)
department = models.ManyToManyField(Department, blank=True)
forms.py表格.py
class StudentRegisterForm(UserCreationForm):
class Meta(UserCreationForm):
model = CustomUser
fields = ['department', ..]
widgets = {'department': forms.CheckboxSelectMultiple()}
def __init__(self, *args, **kwargs):
super(StudentRegisterForm, self).__init__(*args, **kwargs)
self.fields['department'].required = True
def clean_department(self):
value = self.cleaned_data.get('department')
if len(value) > 1:
raise forms.ValidationError("You can't select more than one department!")
return value
def save(self, commit=True):
user = super().save(commit=False)
user.save()
student = Student.objects.create(user=user)
student.department.add(self.cleaned_data.get('department')) <-- got error on this line
return (user, student)
When the CustomUser
object is created, the Student
object will also be created within save
method.当创建CustomUser
对象时,也会在save
方法中创建Student
对象。 But for some reasons it gave me an error但由于某些原因,它给了我一个错误
TypeError: Field 'id' expected a number but got <QuerySet [<Department: GEE>]>.
Noticed that the Department objects were created within admin panel and also the department field within the Student
model works just fine if I create it inside admin panel.注意到 Department 对象是在管理面板中创建的,如果我在管理面板中创建它, Student
模型中的部门字段也能正常工作。
我通过将 * 添加到add
方法中来修复它
student.department.add(*self.cleaned_data.get('department'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.