1

ユーザーを拡張するために Userprofile を介して OneToOne 関係を持ちながら、Django User モデルを使用するという一般的なパターンを使用しています。

同じフォームで User フィールドと UserProfile フィールドの両方を設定できる 1 つのビューが必要です。db トランザクションの両方を User および Userprofile テーブルに適用する必要があります。

ModelForm を使用したいのですが、同じフォームで 2 つのモデルを使用できるとは思いません。

どうすればこれを達成できますか?

4

1 に答える 1

2

ユーザー プロファイルのモデル フォームを作成し、ユーザー モデルのユーザー関連フィールドを追加します。たとえば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
于 2013-06-02T14:25:36.930 に答える