TypeError: super(type, obj): obj должен быть экземпляром или подтипом типа в Django
У меня есть две формы - userthesisForm и thesisForm - которые имеют одну и ту же модель для сохранения. В основном, форма thesisForm предназначена для администратора, а userthesisForm - для студента (обычного пользователя). Я не сталкиваюсь с проблемой сохранения Администратором формы thesisForm, но я получаю эту ошибку TypeError: super(type, obj): obj must be an instance or subtype of type в моем def submit_thesis для студента, представляющего userthesisForm. Как мне решить эту проблему? Заранее спасибо
Это мой код для сохранения thesisForm в views.py:
def add(request):
if request.method == "POST":
form = thesisForm(request.POST, request.FILES)
if form.is_valid():
obj = form.save(commit=False)
obj.uploader = request.user;
obj.save()
messages.success(request, "Project created successfully!" )
return redirect('/manage')
else:
form = thesisForm()
return render(request,'Add.html',{'form':form}, )
Это для сохранения userthesisForm:
def submit_thesis(request):
if request.user.is_superuser:
return redirect('/manage')
else:
if request.method == "POST":
form = thesisForm(request.POST, request.FILES)
if form.is_valid():
obj = form.save(commit=False)
obj.uploader = request.user;
obj.status = 'Pending';
obj.save()
messages.success(request, "Project submitted successfully!" )
return redirect('/myrepository')
else:
form = thesisForm()
return render(request,'submit_thesis.html',{'form':form}, )
Форма тезиса, которую заполнит студент
class userthesisForm(forms.ModelForm):
class Meta:
model = thesisDB
fields = ('title', 'author', 'published_date','tags','short_description', 'pdf', 'image_banner', 'status')
readonly_fields = ['course', 'shell_location', 'date_created']
widgets = {
'title': forms.TextInput(attrs=
{'placeholder': 'Title', 'class':'form-control', 'required': 'required'}),
'published_date': forms.DateInput(attrs=
{'class':'form-control', 'required': 'required', 'type':'date'}),
'author': forms.TextInput(attrs=
{'placeholder': 'Author', 'class':'form-control', 'required': 'required'}),
'short_description': forms.TextInput(attrs=
{'placeholder': 'Physical Description', 'class':'form-control', 'required': 'required'}),
}
def __init__(self, *args, **kwargs):
super(thesisForm, self).__init__(*args, **kwargs)
self.fields['pdf'].required = True
self.fields['tags'].required = True
А вот моя форма диссертации для администратора
class thesisForm(forms.ModelForm):
class Meta:
model = thesisDB
fields = ('title', 'author', 'published_date','tags','short_description', 'pdf', 'image_banner', 'course', 'shell_location', 'status')
readonly_fields = ['date_created']
course = forms.ModelChoiceField(queryset=ColCourse.objects.all().order_by('-id'))
widgets = {
'title': forms.TextInput(attrs=
{'placeholder': 'Title', 'class':'form-control', 'required': 'required'}),
'published_date': forms.DateInput(attrs=
{'class':'form-control', 'required': 'required', 'type':'date'}),
'author': forms.TextInput(attrs=
{'placeholder': 'Author', 'class':'form-control', 'required': 'required'}),
'short_description': forms.TextInput(attrs=
{'placeholder': 'Physical Description', 'class':'form-control', 'required': 'required'}),
'course': forms.Select(attrs=
{'placeholder': 'Short Description', 'class':'regDropDown', 'required': 'required'}),
'shell_location': forms.TextInput(attrs=
{'placeholder': 'Shell Location', 'class':'form-control', 'required': 'required'}),
}
def __init__(self, *args, **kwargs):
super(thesisForm, self).__init__(*args, **kwargs)
# Making location required
self.fields['pdf'].required = True
self.fields['tags'].required = True
Это модель:
class thesisDB(Model):
thesis_id = models.AutoField(primary_key=True, blank=True, null=False)
title = models.CharField(max_length=200, blank=True, null=True)
author = models.CharField(max_length=200, blank=True, null=True)
published_date = models.DateField(blank=True, null=True)
short_description = models.CharField(max_length=210,blank=True, null=True)
pdf = models.FileField(upload_to='pdf/', blank=True, null=True, validators=[FileExtensionValidator(['pdf'])],)
image_banner = models.ImageField(upload_to='image/', blank=True, null=True)
course = models.ForeignKey(ColCourse, default=None, on_delete=models.CASCADE, verbose_name='Course')
tags = TaggableManager()
date_created = models.DateField(auto_now_add=True, blank=True, null=True )
shell_location = models.CharField(max_length=200, blank=True, null=True)
uploader = models.ForeignKey(to=settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
status = models.CharField(max_length=15, blank=True, null=True)
views = models.IntegerField(default=0)