将下拉值的选定选项的值传递给 django 数据库
Posted
技术标签:
【中文标题】将下拉值的选定选项的值传递给 django 数据库【英文标题】:Passing the value of selected option of dropdown value to django database 【发布时间】:2015-09-20 23:56:39 【问题描述】:我正在做一个 Django 项目。我正在制作一个 html 表单(不使用 Djnango 表单)。现在,我可以使用“POST”方法将“文本”输入的值传递给数据库(只需将名称赋予输入标签,并从views.py 中访问它们)。但是当涉及到下拉菜单的响应时,我在做同样的事情时遇到了问题。我有一个下拉菜单,用户可以从中选择多个选项。现在,我如何检测用户选择的选项并将它们传递给views.py,以便我可以从那里将它们添加到数据库中?
这是下拉菜单的代码。
Enter City (hold Ctrl to select more than one)
<label for="inputCity" class="sr-only">Select City to be shipped to</label><br>
<select multiple class="form-control" id="optCity" name="city" required>
% for city in all_cities %
<option>city.city_name</option>
% endfor %
</select><br>
【问题讨论】:
【参考方案1】:<option value=" city.id ">city.city_name</option>
http://www.w3schools.com/tags/tag_option.asp
编辑
表单(模板)
<form action="/" method="post"> % csrf_token %
<p>Enter City (hold Ctrl to select more than one)</p>
<label for="optCity" class="sr-only">Select City to be shipped to</label><br>
<select multiple class="form-control" id="optCity" name="city" required>
% for city in all_cities %
<option value="city.id">city.name</option>
% endfor %
</select>
<p><input type="submit" value="Send form"/></p>
</form>
查看
def form_view(request):
context =
'all_cities': City.objects.all()
if request.POST:
city_pk_list = request.POST.getlist('city', None)
print(request.POST.getlist('city', None))
selected_city_obj_list = City.objects.filter(pk__in=city_pk_list)
print(selected_city_obj_list)
return render(request, 'index.html', context=context)
型号
class City(models.Model):
name = models.CharField(max_length=512)
def __unicode__(self):
return self.name
假设它呈现
<option value="1">Kyiv</option>
<option value="2">Lviv</option>
<option value="3">Odessa</option>
<option value="4">New York</option>
<option value="5">Tbilisi</option>
我选择了Kyiv
和Odessa
所以输出会是
[u'1', u'3']
[<City: Kyiv>, <City: Odessa>]
【讨论】:
谢谢,它有帮助......但问题是,我希望返回“城市”类型的对象。如果我输入 value="city.city_name",它会返回名为特定城市的字符串(比如说 c1 - 字符串)。但我有多个选择 c1、c2、c3 - 它们都是“城市”类型的对象。显然,它表明下拉菜单没有返回“城市”类型的对象。我该怎么办?【参考方案2】:由于问题是开放的,您有很多选择。这里有两个非常简单的解决方案
最简单的,使用ChoiceFiled
。文档是here。
如果您需要更多控制,可以使用特定的小部件。参见文档here
【讨论】:
以上是关于将下拉值的选定选项的值传递给 django 数据库的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 视图需要将选定的下拉列表和日历日期传递给模型
如何在codeigniter中将ajax选择的依赖下拉选项传递给mysql数据库