从用户django自动填充

时间:2012-07-12 21:18:23

标签: django django-forms django-views

我正在尝试创建一个表单,用于更新Django中的用户帐户,该帐户使用该特定用户的当前帐户数据自动填充。我可以用HTML做到这一点,但宁愿找到一种方法让它使用Django的表单系统。由于某些限制我无法使用Django的内置用户管理,我不得不构建自己的。我迷失在从哪里开始。

2 个答案:

答案 0 :(得分:0)

免费在线阅读The Django Book的表格章节。然后查看传递给表单的initial_data。这应该让你滚动。

答案 1 :(得分:0)

如果您使用的是普通表单(子类forms.Form),请使用initial关键字参数将数据传递给表单构造函数:

# forms.py
class MyUserForm(forms.Form):
    username = forms.CharField(...
    first_name = forms.CharField(...
    ...

# views.py
if request.method == 'POST':
    # Process form
    form = MyUserForm(request.POST)
    ...
else:
    form = MyUserForm(initial={
        'username': request.user.username,
        'first_name': request.user.first_name,
        ...
    }
...

更简单的方法是使用Django's ModelForms。类似的东西:

# forms.py
class MyUserForm(forms.ModelForm):
    class Meta:
        model = User

# views.py
if request.method == 'POST':
    form = MyUserForm(request.POST, instance=request.user)
    ...
else:
    form = MyUserForm(instance=request.user)
...