极端的菜鸟在这里。我一直在尝试在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})
非常感谢任何帮助!
答案 0 :(得分:0)
某些对象不可迭代错误将通过添加.all()来修复,其中您正在执行foreach循环。如果循环在模板中,请尝试.all only
在视图中:
for something in array.all():
在模板中:
{% for field in output.all %}
每次我在Django中创建表单时,表单上的方法都是空的 method =“”。这让您返回相同的视图并在那里处理您的数据。如果表单上有错误,您可以重定向到相同的表单,但使用用户已写入的预先保存的数据。
希望它有所帮助。