用存储的信息填充django表单的简单方法 - Django

时间:2017-10-05 21:29:03

标签: django django-forms django-views

我想为用户显示一个django模板。现在我正在开发一个html模板的可编辑版本。我想知道是否有一种方法可以使用从数据库或查询集中获取的相关信息预填充django表单。我知道如何显示和使用表单,但不会预先填写包含信息的表单。

这是一个简单的表单和查询集。

我想使用UserSettingsTwoForm()查询集中的信息填充currentProfile

currentProfile = Profile.objects.get(user = currentUser)
userSettingTwo = UserSettingsTwoForm()
parameters = {
  'userSettingTwo':userSettingTwo,
}
return render(request, 'tabs/user_settings.html', parameters)

以下是一个示例html文件:

{% extends "base.html" %}

{% block content %}
  <h1>Settings</h1>
  <form action="." method="POST">
    {% csrf_token %}
    {{ userSettingTwo.as_p }}
    <input type="submit" name="submit" value="submit">
  </form>
{% endblock %}

1 个答案:

答案 0 :(得分:2)

如果UserSettingsTwoForm是Profile模型表单,那么您可以通过instance instance关键字加载以前的实例并将实例传递给它

currentProfile = Profile.objects.get(user = currentUser)
userSettingTwo  = UserSettingsTwoForm(instance=current_profile)
 parameters = {
  'userSettingTwo':userSettingTwo,
}
return render(request, 'tabs/user_settings.html', parameters)

如果UserSettingsTwoForm不是配置文件模型表单,则使用Initial。

currentProfile = Profile.objects.get(user = currentUser)
userSettingTwo  = UserSettingsTwoForm(initial = {'form_field': currentProfile.fieldname, 'form_second_field': currentProfile.fieldname})
 parameters = {
  'userSettingTwo':userSettingTwo,
}
return render(request, 'tabs/user_settings.html', parameters)

那&#39;它