我正在构建一个创建布局页面,供用户输入值并在模板中使用。我现在的问题是在我的视图函数中我无法从模型中获取字段数据并将其重新填充为django形式。我只想为布局模型输入1个数据,这些数据总是被抓取并放入表单中,以便用户可以编辑然后重新保存它。此问题将驻留在View.py中。这就是我所拥有的:
View.py:
def create_layoutform(request, template_name='layout/create.html'):
if len(Layout.objects.all()) > 0:
# if you have a form, load it
MyLayout = Layout.objects.get(pk=1)
LayoutUpdateForm = LayoutForm(MyLayout)
tmpl_vars = {
'layoutupdateform':LayoutUpdateForm,
}
return render(request, template_name, tmpl_vars)
else:
layout_form = LayoutForm(request.POST or None)
layout = layout_form.save(commit=False)
layout.save()
tmpl_vars = {
'layoutform':layout_form,
}
return render(request, template_name, tmpl_vars)
我对视图的打印输出:Layout.objects.get(pk = 1)
只抓取模型的名称(布局对象)
答案 0 :(得分:1)
我相信这是因为这条线; LayoutUpdateForm = LayoutForm(MyLayout)
。 Django表单的第一个参数是data
,但是你想使用instance
参数[1]。尝试将其更改为LayoutUpdateForm = LayoutForm(instance=MyLayout)
。
注意:这假设您的LayoutForm
是从forms.ModelForm
继承的。
[1] https://github.com/django/django/blob/master/django/forms/models.py#L313