【问题标题】:Updating user information for an extend user field - Django更新扩展用户字段的用户信息 - Django
【发布时间】:2023-05-09 11:49:01
【问题描述】:

我正在尝试创建一个 update_profile 表单。这种形式将能够 更新不是原始形式的扩展用户信息。 所以,我有一个表格可以让你创建一个帐户。有很多 此表单中未列出的其他字段。这些字段的其余部分 当用户实际登录并尝试编辑他们的个人资料时会发现。什么我想不通 是如何在该类中创建允许他们更新此信息的保存功能。 就像我制作的扩展用户类一样,我有一个保存功能 创建一个用户并保存它。但我不想再创造一个 使用此表单的用户。我只是想更新当前经过身份验证的 用户。我以为会有一个 update_user-type 函数 UserManager(),但没有。我尝试谷歌搜索并没有出现 有很多。请帮忙?

【问题讨论】:

    标签: django profile updating


    【解决方案1】:

    使用ModelForm 使用subset of the fields 为您的自定义UserProfile 模型创建一个表单:

    使用表单上的字段子集

    在某些情况下,您可能不希望所有 模型字段出现在 生成的表格。有三种方式 告诉 ModelForm 只使用一个 模型字段的子集:

    1. 在模型字段上设置 editable=False。 因此,任何从 通过 ModelForm 的模型将不包括 那个领域。
    2. 使用字段属性 ModelForm 的内部 Meta 类。 这个属性,如果给定,应该是 要包含在 形式。字段的顺序 在该列表中指定的名称是 在表单呈现它们时受到尊重。
    3. 使用排除属性 ModelForm 的内部 Meta 类。这 属性,如果给定,应该是一个列表 要从中排除的字段名称 形式。

    https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-a-subset-of-fields-on-the-form

    【讨论】:

    • 我了解如何排除某些类别并将表单设为我自己的,但我并没有完全问这个问题。让我试着更好地解释一下,如果我用 HTML 制作表单,我可以设置一个“值”参数。我希望将每个表单字段的这个值设置为数据库中的值。然后,当用户更改值并重新提交时,它会更新此信息。请帮帮我,谢谢。
    • 在您看来,使用form = MyForm(instance=myinstance) 来加载您的值。在此处阅读更多信息:docs.djangoproject.com/en/dev/topics/forms/modelforms
    最近更新 更多