すべて、modelformsetをmanytomanyfieldで初期化する
モデルフォームをmanytomanyfieldで初期化しようとしています。キャッチは、私がmanytomanyfieldの名前(それが縛られるクラスも)を事前に知らないということです。ここで
は私のモデルと形である:
class Book_model(models.Model):
title = models.CharField(max_length=BIG_STRING)
authors = models.ManyToManyField("Author_model",)
class Author_model(models.Model):
name = models.CharField(max_length=BIG_STRING)
class Book_form(ModelForm):
class Meta:
model = Book_model
class Author_form(ModelForm:
class Meta:
model = Author_model
Author_formset = modelformset_factory(Author_model,form=Author_form)
そして、他の場所で私のコードで私はAuthor_formsetとともにModel_formを表示しようとしています。しかし、そのフォームセットを初期化する時間が来たら、私は何をすべきか分かりません。その時点で、私はm2mフィールドの名前( "authors")、親モデルインスタンス(Book_model)、親フォームインスタンス(Book_form)、およびformsetクラス(Author_formset)を知っています。私はフィルターに入れて右の用語を知らない、
m2m_field = getattr(book,"authors")
qset = field.filter(<only authors for which there is a m2m relationship from this book>)
formset = Author_formset(queryset=qset)
しかし:私はちょうどこのような何かをする必要があることを前提としています。
提案がありますか?
ありがとうございました。しかし、物事はうまくいっていません。 「シェイクスピア」の著者がいる本を偽りましょう。私の見解が_that_本を使用している場合、 'formset = AuthorFormset(queryset = book.authors.all())'はうまく動作しているようです(シェイクスピアの詳細が含まれたフォームセットを表示します)。しかし、私の見解が新しいモデルを使用している場合、formsetは空でなければなりません。しかし、 'formset = AuthorFormset()'は、シェイクスピアの詳細を含むフォームを表示するだけでなく、私が期待したような空のフォームではありません。 – trubliphone