Загрузить файлы в Django - PullRequest
0 голосов
/ 28 сентября 2019

Я использую плагин DropzoneJS в своем проекте Django.Я хочу загрузить файлы в базу данных (проблема в том, что я загружаю пустые файловые объекты без прикрепленного файла).

enter image description here

enter image description here

Это модели:

class File(models.Model):
    file = models.FileField(null=True, blank=True)

    class Meta:
      verbose_name_plural = 'Files'

    def __unicode__(self):
      return self.file

    def __str__(self):
      return "{file}".format(file=self.file)

    def get_absolute_url(self):
      return reverse("Assignments:detail", kwargs={"id": self.id})

class Assignment(models.Model):
    name = models.CharField(max_length=100, null=True)
    info = models.CharField(max_length=10000, null=True)
    subject = models.CharField(max_length=50, null=True)
    created = models.DateField(default=date.today, null=True)
    deadline = models.DateField(default = date.today, null=True)

    files = models.ManyToManyField(File, blank=True, null=True)

    class Meta:
      verbose_name_plural = 'Assignments'

    def __str__(self):
      return "{name}".format(name=self.name)

Это мой взгляд на публикацию:

@login_required
def teacher_assignment_add_files(request, assignment_id):
  if request.method == 'POST':
    thefile = request.FILES.get('file-assignment')
    file = File(file=thefile)
    file.save()


    assignment = Assignment(id=assignment_id)
    assignment.files.add(file.id)
    return redirect('teacher-detail-assignment', id = assignment_id)

Я пробовал:

thefile = request.Files['file-assignment']

Это даже не создание объекта

HTML-форма для создания файла:

<form class="dropzone" action="{% url 'teacher_assignment_add_file' OBJECTID %}" method="POST" enctype="multipart/form-data">
 {% csrf_token %}
 <div class="fallback">
 <input type="submit" type="file" name="file-assignment" enctype="multipart/form-data">
 </div>
 </form>
...