如何使用当前用户数据在 Django 表单中填写 'initial value'?
How to fill 'initial value' in Django forms with current user data?
我继续创建了一个表单来更新用户数据库条目。
class UserUpdateForm(forms.ModelForm):
class Meta:
model = User
fields = ("username", "first_name", "last_name", "email")
但是当我呈现表单时,所有输入字段都是空的。我如何使用当前用户名和电子邮件等用户数据填充它们?
我使用 Bootstrap 5 来设置样式,但这很重要:
<div class="mb-3">
<label for="{{ form.first_name.id_for_label }}" class="form-label">{{ form.first_name.label }}</label>
{{ form.first_name|addcss:"form-control"}}
</div>
问题是,我使用 Django 模板引擎呈现输入字段,但没有自己指定。我的想法是链接模板过滤器:
<div class="mb-3">
<label for="{{ form.username.id_for_label }}" class="form-label">{{ form.username.label }}</label>
{{ form.username|addcss:"form-control"|addplaceholder:user.username}}
</div>
但这没有用,因为第一个过滤器将其转换为小部件:
@register.filter(name="addcss")
def addcss(field, css):
return field.as_widget(attrs={"class": css})
也许你可以向我推荐一种修改过滤器的方法,或者告诉我一个完全不同的方法。
当您在视图中创建表单时,您可以指定一个实例:
form = UserUpdateForm(instance=user_instance)
在模板中呈现此表单将在表单中显示来自 user_instance
的值。
您还可以为表单指定一个 initial
字典,但通常只对空表单有用。
form = UserUpdateForm(instance=request.user)
您必须设置初始化数据。
我继续创建了一个表单来更新用户数据库条目。
class UserUpdateForm(forms.ModelForm):
class Meta:
model = User
fields = ("username", "first_name", "last_name", "email")
但是当我呈现表单时,所有输入字段都是空的。我如何使用当前用户名和电子邮件等用户数据填充它们?
我使用 Bootstrap 5 来设置样式,但这很重要:
<div class="mb-3">
<label for="{{ form.first_name.id_for_label }}" class="form-label">{{ form.first_name.label }}</label>
{{ form.first_name|addcss:"form-control"}}
</div>
问题是,我使用 Django 模板引擎呈现输入字段,但没有自己指定。我的想法是链接模板过滤器:
<div class="mb-3">
<label for="{{ form.username.id_for_label }}" class="form-label">{{ form.username.label }}</label>
{{ form.username|addcss:"form-control"|addplaceholder:user.username}}
</div>
但这没有用,因为第一个过滤器将其转换为小部件:
@register.filter(name="addcss")
def addcss(field, css):
return field.as_widget(attrs={"class": css})
也许你可以向我推荐一种修改过滤器的方法,或者告诉我一个完全不同的方法。
当您在视图中创建表单时,您可以指定一个实例:
form = UserUpdateForm(instance=user_instance)
在模板中呈现此表单将在表单中显示来自 user_instance
的值。
您还可以为表单指定一个 initial
字典,但通常只对空表单有用。
form = UserUpdateForm(instance=request.user)
您必须设置初始化数据。