【问题标题】:Django passing from DropDownlist to ViewDjango 从 DropDownlist 传递到 View
【发布时间】:2016-09-06 09:12:59
【问题描述】:

我正在尝试获取所选下拉菜单的值。我已经完成了以下操作,它返回了一个“空”值。

我认为问题出在:newupload = request.POST('nameProjects') 但我不确定如何让它工作。

上传.html

<form class="form" method="POST" action="upload">
<select id="ddProjects" name="nameProjects">
    {% for project in projects %}
      <option value="{{ project.id }}">{{ project.name }}</option>
    {% endfor %}
</select>
</form>

views.py

def upload_new(request):
    newupload = Upload()
    projects = Project.objects.all()
    newupload.project = request.POST['nameProjects']
    newupload.save()
return render(request, 'upload.html', {'projects':projects})    

【问题讨论】:

  • 你为什么不用 Django 表单?
  • 但与此同时,您正在获取一个字符串值,然后尝试对其调用save。您到底要保存什么以及保存到哪里?
  • 第三,你使用的代码会在你提到的那一行给你一个明显的错误。您应该发布该错误,但也应该自己尝试理解并修复它。
  • 错误信息:'QueryDict' 对象不可调用
  • 我之前的开发者使用的是 HTML 表单而不是 Django 表单

标签: python django django-forms django-views


【解决方案1】:

在views.py 中,你应该使用request.POST['nameProjects'] 因为request.POST 会给出一个字典。如果要将项目对象存储在上传模型中,我们需要给项目模型实例变量或者可以给id。

def upload_new(请求): 新上传 = 上传() 项目 = Project.objects.all() newupload.project_id = request.POST['nameProjects'] 新上传.save() 返回渲染(请求,'upload.html',{'projects':projects})

【讨论】:

  • 谢谢,但现在我收到此错误:django.utils.datastructures.MultiValueDictKeyError: "'nameProjects'"
猜你喜欢
  • 2019-06-15
  • 1970-01-01
  • 2013-08-08
  • 2020-02-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多