【问题标题】:Simple way to fill django form with stored information - Django用存储的信息填充 django 表单的简单方法 - Django
【发布时间】:2018-03-17 15:08:00
【问题描述】:

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

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

我想用来自currentProfile 查询集的信息填充UserSettingsTwoForm()

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 %}

【问题讨论】:

    标签: django django-forms django-views


    【解决方案1】:

    如果 UserSettingsTwoForm 是 Profile 模型表单,那么您可以通过 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)
    

    就是这样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-20
      • 2011-04-11
      • 2021-12-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-14
      相关资源
      最近更新 更多