0

登録には、モデルごとにグループ化された次のフィールドが必要です。

ユーザープロフィール

  1. フルネーム
  2. 生年月日
  3. 職業

住所

  1. ジップ

私の質問は、1 つの登録フォームと 1 つのテンプレートだけをこれらのモデルの両方に保存したい場合、どうすればそれを実現できますか? **私は Django@1.5.4 を使用しています

4

1 に答える 1

1
from your app.forms import UserProfileForm, AddressForm


def your_view(request):
    user_profile_form = UserProfileForm(request.POST or None)
    address_form = AddressForm(request.POST or None)

    if user_profile_form.is_valid() and address_form.is_valid():
        # creates and returns the new object, persisting it to the database
        user_profile = user_profile_form.save()

        # creates but does not persist the object
        address = AddressForm.save(commit=False)

        # assigns the foreign key relationship
        address.user_profile = user_profile

        # persists the Address model
        address.save()

    return render(request, 'your-template.html',
        {'user_profile_form': user_profile_form,
        'address_form': address_form})

上記のコードは、 にUserProfile外部キー フィールドがAddressあり、モデルの から継承する上記のクラスを作成したことを前提としていModelFormます。

もちろん、気分を害することはありませんが、Django チュートリアルをざっと見ただけで、この質問に答える良いスタートが切れるはずです。モデルとクエリセット API のドキュメントを熟読することも、開始するのに適した場所です。

Django ビューは、request.POST 内のデータからハイドレートしようとするフォーム クラスの数を制限しません。

于 2013-10-21T18:18:08.047 に答える