私はPOSTからのデータを取得し、この標準のスニペットを経由して、それを検証:変更データは
entry_formset = EntryFormSet(request.POST, request.FILES, prefix='entries')
if entry_formset.is_valid():
....
EntryFormSetのModelFormサブクラスは、テキストフィールドを提示する外部キーフィールドウィジェットを上書きします。これにより、ユーザーは既存のキー(Ajaxライブ検索を介して提案)を入力するか、シームレスに追加される新しいキーを入力することができます。
私はこのtry-exceptブロックを使用してオブジェクトがすでに存在するかどうかをテストし、存在しない場合は追加します。
entity_name = request.POST['entries-0-entity']
try:
entity = Entity.objects.get(name=entity_name)
except Entity.DoesNotExist:
entity = Entity(name=entity_name)
entity.slug = slugify(entity.name)
entity.save()
はしかし、私はすぐに戻ってentry_formset
にそのentity
を取得する必要があります。 entries-0-entity
は文字列であると考えています。 entry_formset
の値に直接アクセスして、代わりにオブジェクト参照を取得するにはどうすればよいですか?
質問は不明です。 2番目のコードスニペットはどこで起こりますか?もっと多くのあなたの意見を投稿したなら、おそらく助けになるでしょう。 –
2番目のスニペットは 'if entry_formset.is_valid()'ブロック内で直接発生します。 –
あなたの質問とは無関係ですが、Entity.objects.get_or_create(name = entity_name)を使用しない理由は何ですか? –