0

アプリにはさまざまなモデルがあり、メイン モデルには他のモデルの複数のインスタンスがあります。

models.py:

class Person(models.Model):
    ...

class Pet(models.Model):
    owner = models.ForeignKey(Person)
    ...

フォーム.py:

class PersonForm(forms.ModelForm):
    class Meta:
        model = Person


PetFormSet = inlineformset_factory(Person, Pet, extra = 1)

ビュー.py:

def add_template(request):
    person_form = PersonForm(prefix = 'person_form')
    pet_form = PetFormSet(instance = Person(), prefix = 'pet_form')
    ... # check is_valid(), render when no POST data is present, etc.

ポイントは、追加が完全に機能し、各インスタンスを対応するデータベース テーブルに格納するなどです。jquery.formset-1.2.js を使用して、「add.html」でフォームの動的な追加と削除を管理します。

しかし、後でビューを介して保存された情報を編集したい、つまり、リクエストで渡したオブジェクトからデータをロードし、データベースから取得したデータを使用してフォームセットをレンダリングします (編集中の人物に関連するペットが 3 匹いる場合) 、値が表示された「Pet」の 3 つのフォーム インスタンスを表示します)。

また、新しいペットを追加したり、既存のペットを削除したり、既存のフィールド値を変更したりしたいと考えています。

FormSet の作成でクエリセットを試しましたが、何も表示されません。

この問題を緩和する方法はありますか? アプリを使ってフォームセットを簡単に管理できますか?

ありがとうございました

4

1 に答える 1

0

私はあなたの問題を正しく理解しているかどうかわかりません。Petsに属するすべてを表示したい場合Person

def show_pets(request, person_id=None):
person = get_object_or_404(Person.objects.select_related(), id=person_id)
if request.method == 'POST':
   person_form = PersonForm(request.POST, instance=person)
   pet_formset = PetFormSet(request.POST, instance=person)
   # Rest of your code here
else:
   person_form = PersonForm(instance=person)
   pet_formset = PetFormSet(instance=person)
return render_to_response('your_template.html', {'person_form': person_form,
                                                        'pet_formset': pet_formset)})

次に、テンプレートで両方のフォームをレンダリングしadddelete機能を追加する必要があります

于 2013-01-25T13:51:07.220 に答える