首页 > 解决方案 > 如何使用 django UpdateView 填充现有的 html 表单?

问题描述

我正在尝试实现一个简单的 UpdateView,但我想使用自己的模板。使用 djangos auto_population 是有效的,但不是我想要的,因为我有很多格式不同的字段。

<form method="post" action="#">
    {% csrf_token %}
    {{ form.as_p }}
    <input type="submit">
</form>

但我想使用我自己的表单模板,如下所示:

编辑模板.html

<form class="form-horizontal" role="form" method="POST" action="{%   url 'update' pk=abc %}">
    {% csrf_token %}
<input name='varX' id="varX" type="text" placeholder="" class="form-class">

<input name='varY' id="varY" type="text" placeholder="" class="form-class">
</form>

视图.py

class ModelUpdate(UpdateView):
    model = MyModel
    fields = ['varX','varY']

现在我想用我的对象数据填充该表单,但该表单是空的。

UpdateView 还将数据两次传递给模板:一次作为“对象”,一次作为“mymodel”。

我也试过更新

get_context_data

通过添加

context.update( model_to_dict(myModelData))

但这也不会改变任何事情。

如何使用 djangos 基于类的视图填充我的自定义表单?

标签: djangopython-3.x

解决方案


尝试这个:

def get_initial(self):
    initial = super().get_initial()
    initial['my_form_field1'] = self.request.something
    return initial

推荐阅读