繁体   English   中英

Django Formset不保存我的文件

[英]Django formset not saving my files

所以我有这两个模型Lecture和FileUpload。 我希望用户能够将讲座添加到特定课程,并且还可以上传该讲座的多个文件。 事实是,提交表单后,除了上载的文件之外,其他信息都被保存了,所以我猜我的表单集出了点问题。 请看一看:

 FileFormset = inlineformset_factory(Lecture, FileUpload, exclude=[]) def classroom(request): if request.method == 'POST': form1 = LectureForm(request.POST) if form1.is_valid(): lecture = form1.save() formset = FileFormset(request.POST, request.FILES, instance=lecture, prefix='files') if formset.is_valid(): formset.save() else: print(formset.errors) formset.save() return redirect('courses:index') else: form1 = LectureForm() formset = FileFormset() context = {'teacher_data': TeacherData.objects.all(), 'teachers': Teacher.objects.all(), 'courses': Course.objects.all(), 'form1': form1, 'formset': formset, } return render(request, 'courses/classroom.html', context) 
  <form method="post" action=""> {% csrf_token %} {{ form1.as_p }} {{ formset.management_form }} {% for form in formset %} {{ form }} <br> {% endfor %} <br> <button type="submit">Add Lecture</button> </form> class LectureForm(forms.ModelForm): class Meta: model = Lecture fields = ('course', 'lecture_title', 'lecture_category', 'content') class FileForm(forms.ModelForm): class Meta: model = FileUpload fields = ('files',) 
 class Lecture(models.Model): LECTURE_CHOICES = ( ('Courses', 'Courses'), ('Seminars', 'Seminars'), ) course = models.ForeignKey('Course', on_delete=models.CASCADE, default='', related_name='lectures',) lecture_category = models.CharField(max_length=10, choices=LECTURE_CHOICES, default='Courses',) lecture_title = models.CharField(max_length=100, blank=True, null=True) content = models.TextField(blank=True, null=True) def __str__(self): return str(self.lecture_title) class FileUpload(models.Model): files = models.FileField(upload_to='documents', null=True, blank=True) lecture = models.ForeignKey('Lecture', related_name='files', on_delete=None, default=None) def __str__(self): return str(self.files) 

从小部件中向您添加enctype属性,

<form method="post" action="" enctype= multipart/form-data>

尝试这个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM