Django ORM保存没有模型格式的上传文件

时间:2019-12-22 16:58:02

标签: django django-models

这是我的模特

class Profile(models.Model):
    user = models.OneToOneField(
        User,
        on_delete=models.CASCADE,
    )
    certificate = models.FileField(null=True, blank=True, unique=False)

当用户在前端上传文件时,我正在尝试更新证书。

这样做如下:

def update(request):
    if request.user.is_authenticated:
        if request.method == 'POST':
            profile = Profile.objects.get(user__id=request.user.id)
            profile.certificate = request.POST['certificate']
            profile.save()
        return render(request, 'dashboard/update.html')
    else:
        return redirect('user.login')

我看到该字段已填充,但是当我单击Django模板上的文件名时,未显示,表示未找到页面,但我在同一模型中有另一个文件字段,该文件未更新,工作正常

有人可以帮我完成它吗?我正在尝试上传未使用modelfrom保存的文件,而没有实现该方法。

1 个答案:

答案 0 :(得分:1)

首先,可以通过request.FILES而不是request.POST访问上载的文件!因此,应该是:

profile.certificate = request.FILES['certificate']

此外,请确保您的模板中具有以下内容:

<form method="POST" enctype="multipart/form-data" action="{% url 'your_url' %}">
    [...]
</form>

(请注意enctype="multipart/form-data",没有该文件就无法上传)。

如果这不起作用,请向我们显示模板和用于此的表格!