모두모델 토폴로지를 manytomanyfield로 초기화하십시오.
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를 표시하려고 : 여기
내 모델과 형태이다. 그러나, 그 formset을 초기화 할 시간이 왔을 때, 나는 무엇을 해야할지 잘 모르겠습니다. 이 시점에서 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을 보여줍니다. 그러나 내 견해가 새 모델을 사용하는 경우 formset은 비어 있어야합니다. 그러나'formset = AuthorFormset()'은 셰익스피어의 세부 사항이있는 양식을 보여 주기도합니다. 내가 예상했던 것처럼 빈 양식이 아닙니다. – trubliphone