django 预填表格

Posted

技术标签:

【中文标题】django 预填表格【英文标题】:django pre filled form 【发布时间】:2021-08-19 01:47:30 【问题描述】:

我希望在第一次渲染时预先填充表单数据,初始参数根本不影响表单。 当用户编辑个人资料时,我希望用户数据显示在表单中。

def profile_update(request):
    if request.method == 'POST':
        form = UpdateProfile(
            initial='username': 'Hi there!', instance=request.user)
        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('profile'))
    else:
        form = UpdateProfile()

    return render(request, 'users/profile_update.html', 'form': form)


class UpdateProfile(forms.ModelForm):
    email = forms.EmailField()
    img = forms.ImageField(label='img', required=False)

    class Meta:
        model = TbUser
        fields = ['username', 'img', 'email', 'cellphone', 'empno', 'real_name', 'nfc_id',
                  'sex', 'role', 'department']

【问题讨论】:

【参考方案1】:

如果是 GET 请求,您需要将 initial 传递给表单:

from django.shortcuts import redirect

def profile_update(request):
    if request.method == 'POST':
        form = UpdateProfile(request.POST, request.FILES, instance=request.user)
        if form.is_valid():
            form.save()
            return redirect('profile')
    else:
        form = UpdateProfile(initial='username': 'Hi there!')

    return render(request, 'users/profile_update.html', 'form': form)

【讨论】:

以上是关于django 预填表格的主要内容,如果未能解决你的问题,请参考以下文章

如果我们无法访问表单 html 文件,是不是有预填表单?

基于 Web 请求预填充 Django 表单

模型形式中的 django auto slug,例如 django admin 中的预填充字段

预填充 Django(非模型)表单

编辑时的 Django FormWizard 预填充

如何预填充 Django 更新表单并将其写回数据库