全て、
manytomanyfieldを使用してmodelformsetを初期化しようとしています。キャッチは、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)、およびフォームセットクラス(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)
しかし、私はフィルターに入れる正しい用語を知りません。
助言がありますか?