创建Django下拉表单,允许用户选择要提交的模型

时间:2014-03-01 16:13:25

标签: django forms

极端的菜鸟在这里。我一直在尝试在Django中创建一个简单的表单,用户可以从数据库中的模型中进行选择,然后单击“提交”(然后我将返回一个对象列表)。

但是,我收到以下错误:'ModelBase'对象不可迭代 请注意到目前为止我要尝试实现的是实际渲染表单。

以下是代码:

HTML

<form action="." method="">
  {% csrf_token %}
{% for field in output %}

    {{ output.as_p }}

{% endfor %}
  <input type="submit" value="Save" />
</form>

Forms.py

from projectdb.models import *

class TablesForm(forms.Form):
    models = models.get_models()
    select = forms.ChoiceField(choices=models)

Views.py

def output_form(request):
    form = TablesForm()
    return render(request, 'projectdb/output.html', {'output': form})

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

某些对象不可迭代错误将通过添加.all()来修复,其中您正在执行foreach循环。如果循环在模板中,请尝试.all only

在视图中:

for something in array.all():

在模板中:

{% for field in output.all %}

每次我在Django中创建表单时,表单上的方法都是空的 method =“”。这让您返回相同的视图并在那里处理您的数据。如果表单上有错误,您可以重定向到相同的表单,但使用用户已写入的预先保存的数据。

希望它有所帮助。