Я хочу вставить данные через представление создания. У меня есть две формы в одном представлении, и я не могу их обработать. Я сохраняю одну форму за раз, но не обе одновременно. В одной форме у меня есть csvfile.Now я сохранил первую форму обычным методом HTML-файла, просто получив CSV-файл и сохранив его.Но для второй формы я использовал Uploadform и хочу сохранить ее с помощью метода createview. Пока я не могу это сделать, я совершенно новичок в django и запутался. До сих пор я узнаю, что form.save не работает в классена основе представления. Пожалуйста, кто-то предлагает правильное решение, как сохранить форму загрузки.Код ниже:
class Addfile(CreateView):
template_name = 'essay/THome.html'
model=UploadAssignment
form_class = UploadForm
def get(self,request):
form=self.form_class(None)
#myform=self.upload_form(None)
return render(request, self.template_name, {'form': form})
def post(self,request):
upload=UploadForm(request.POST or None)
form = self.form_class(None)
if not(upload.is_valid()):
csv_file=request.FILES["csv_file"]
if not csv_file.name.endswith('.csv'):
messages.error(request, 'File is not csv type')
return redirect('essay:file')
if csv_file.multiple_chunks():
messages.error(request, "File size is too big (%.2f MB)." %(csv_file.size/(1000*1000),))
return redirect('essay:file')
file_data=pandas.read_csv(csv_file)
myids=file_data['id'].tolist()
passwords=file_data['password'].tolist()
t_len=len(myids)
teacher=get_object_or_404(Teacher.objects.filter(user=request.user))
for iterate in range(0,t_len):
if (User.objects.filter(username=myids[iterate]).exists() == 1):
messages.error(request, "Cannot register students username already exists")
return render(request, self.template_name, {'form': form})
obj=User.objects.create_user(username=myids[iterate],password=passwords[iterate],is_student=True,is_prof=False)
obj.save()
Student.objects.create(user=obj,teacher=teacher,batch="F-14")
else:
form.teacher = self.request.user
form.save()
return render(request,self.template_name,{'form':form})
Если форма загрузки недействительна, сохраните данные файла CSV, иначе сохраните данные формы загрузки. Файл CSV сохранен, но форма загрузки не работает в операторе else. В форме загрузки появляется каждое полеиз формы html, за исключением учителя, который является внешним ключом, полученным от пользователя, который вошел в систему.
Forms.py:
class UploadForm(forms.Form):
model=UploadAssignment
Title=forms.CharField(widget=forms.TextInput(
attrs={
"size":40
}
))
deadline=forms.DateField(widget=forms.SelectDateWidget)
Description=forms.CharField(required=True,label="Text",widget=forms.Textarea(
attrs={
"rows":20,
"cols":100
})
)
fields=['title','deadline','description']
Загрузить назначение в models.py:
class UploadAssignment(models.Model):
teacher=models.ForeignKey(Teacher,on_delete=models.CASCADE)
title=models.CharField(max_length=30)
deadline=models.DateField()
description=models.CharField(max_length=100)
У меня возникает ощущение, что янаписал плохой код, но все равно буду очень признателен за исправление.