【发布时间】:2011-09-07 03:24:06
【问题描述】:
我有一个模型表单,我的视图会生成一个用于编辑内容的 HTML 表单。目前,它能够拉入当前存储的文本内容,如下所示:
@login_required
def edit_person(request, s_id, p_id):
p = get_object_or_404(Person, id=p_id)
if request.method == 'POST':
form = PersonForm(request.POST, request.FILES)
if form.is_valid():
p.name = request.POST['name']
p.title = request.POST['title']
handle_uploaded_file(request.FILES['photo'], request.FILES['photo'].name, 'media/images/people/')
p.photo = request.FILES['photo']
p.order = request.POST['order']
p.save()
return HttpResponseRedirect('/section/'+s_id+'/')
else:
return HttpResponse("error")
else:
form = PersonForm({ 'name': p.name, 'title': p.title, 'photo': p.photo, 'order': p.order })
return render_to_response('auth/edit-form.html', { 'form': form }, context_instance=RequestContext(request))
return HttpResponseRedirect('/section/'+s_id+'/')
但是,照片文件路径为空白。如果用户不想更改图像,我不希望用户每次编辑某些内容时都必须上传新文件。如何让文件上传字段显示为预填充并且如果他们不更改它不会覆盖自身?谢谢。
【问题讨论】:
-
请参阅stackoverflow.com/questions/4684013/… 了解为什么不能这样做的简要说明。
-
@George Cummins - 好的,这是有道理的。我想我的下一个问题是,如何让表单验证上传字段是否留空?我试图告诉它仅在用户上传文件时才覆盖文件,如果没有,则使用以前存在的文件。我收到一个 MultiValueDictKeyError
-
使用
p.save(commit=False)浏览save()[1]:docs.djangoproject.com/en/dev/topics/forms/modelforms/…的文档 -
@Pannu - 谢谢!完全成功!
标签: django django-templates django-forms django-views