全部,使用manytomanyfield初始化modelformset
我正在嘗試初始化一個帶有許多字段的modelformset。有一個問題是,我不能預先知道多人組合的名稱(也不是它所綁定的組)。
這裏是我的模型和形式:
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字段(「作者」),父模型實例(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 = AuthorFormset()'也顯示出莎士比亞的細節,而不是像我預期的那樣空洞的形式。 – trubliphone 2012-01-28 05:20:58