在列表中选择选项

时间:2014-06-02 09:26:06

标签: django

我有一个元组列表,我想在显示所有选项后从<select>中选择一个元素。

我有两个问题:

  • 当我用django打印它时,我无法正确打印我的元组列表,因为它没有显示正确的内容。这是我的清单的一部分:

    ISO639 = [
        ('ab', 'Abkhaz'),
        ('aa', 'Afar'),
        ('af', 'Afrikaans'),
        ('ak', 'Akan'),
        ('sq', 'Albanian'),
        ('am', 'Amharic'),
        ('ar', 'Arabic'),
        ]
    

    我收到了:

    from ISO639 import ISO639 as languages
    
    def index(request):
        if request.method == 'POST':
            form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
                handleUploadFile(request.POST['name'] + '.json', request.FILES['docfile'], request.POST['language'])
                return HttpResponseRedirect(reverse('fraud.api.views.index'))
        else:
            form = UploadFileForm()
    
        return render_to_response('api/index.html',
                                  {'form': form, 'languages': languages},
                                  context_instance=RequestContext(request))
    

    显示如下:

    <form action="{% url "upload" %}" method="post" enctype="multipart/form-data" id="api">
        <select>
            {% for key, value in languages %}
            <option value={{ key }}> {{ value }}</option>
            {% endfor %}
        </select>
        <p><input type="submit" value="Upload" /></p>
    </form>
    

    当我看到输出时,它只打印1个字符而不是选项列表中的完整单词。

  • 我有一个带有attribut语言的表单,我不知道如何在该字段中存储该值。

    class UploadFileForm(forms.Form):
        language = forms.CharField(max_length = 512)
    

我确信有更好的方法可以做到这一点,我对django很新,并对任何建议持开放态度。

感谢。

2 个答案:

答案 0 :(得分:2)

您不需要为模板添加逻辑。为什么不使用ChoiceField?有关文档,请参阅https://docs.djangoproject.com/en/dev/ref/forms/fields/#choicefield

我不确定你的意思&#34; stock&#34;在你的第二个问题。您想将它存储在数据库中吗?如果是这样,你可能想要使用ModelForm。

答案 1 :(得分:0)

你可以这样实现:

ISO639 = (
        ('ab', ('Abkhaz')),
        ('aa', ('Afar')),
        ..............
        ..............
        )

class UploadFileForm(forms.Form):
    language = forms.ChoiceField(choices= ISO639)