这是我的模特
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保存的文件,而没有实现该方法。
答案 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"
,没有该文件就无法上传)。
如果这不起作用,请向我们显示模板和用于此的表格!