如何从模型中的字段中获取数据并将它们填充到 Django 表单中

How to grab data from fields in the model and populate them to a django form

我目前正在构建一个创建布局页面,供用户输入值并在模板中使用。我现在的问题是在我的视图函数中,我无法从模型中获取字段数据并将其重新填充到 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)

仅获取模型名称(布局对象)

我相信是因为这条线; 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