【问题标题】:Django User model and Userprofile model in the same formDjango User 模型和 Userprofile 模型在同一个表单中
【发布时间】:2013-06-02 13:25:59
【问题描述】:

我正在使用通用模式,即使用 Django 用户模型,同时通过 Userprofile 建立 OneToOne 关系来扩展用户。

我想要一个视图,它允许我在同一个表单上设置用户字段和用户配置文件字段。它应该将 db 事务应用于 User 和 Userprofile 表。

我很想使用 ModelForm,但无论如何我都没有发现我可以在同一个表单中使用两个模型。

我应该如何做到这一点?

【问题讨论】:

标签: django django-models django-forms


【解决方案1】:

为您的用户配置文件创建模型表单并为用户模型添加用户相关字段,例如first_namelast_name 并在保存配置文件模型时保存用户字段:

class ProfileForm(forms.ModelForm):
    first_name = forms.CharField('First Name', max_length=25)
    last_name = forms.CharField('Last Name', max_length=25)

    def __init__(self, *args, **kwargs):
        super(ProfileForm, self).__init__(*args, **kwargs)

    class Meta:
        model = ProfileModel
        exclude = ('user', )

    def save(self, *args, **kwargs):
        instance = super(ProfileForm, self).save(*args, **kwargs)
        user = instance.user
        user.first_name = self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']
        user.save()
        return instance

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    相关资源
    最近更新 更多