Все,Инициализация modelformset с 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)
И в другом месте в моем коде я пытаюсь отобразить Model_form вместе с Author_formset. Когда приходит время инициализировать этот набор форм, я не уверен, что делать. В этот момент я знаю имя поля m2m («авторы»), экземпляр родительской модели (Book_model), экземпляр родительской формы (Book_form) и класс formet (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_ book, то 'formet = AuthorFormset (queryset = book.authors.all())', кажется, работает нормально (он завершает показ формы с одной формой, содержащей детали Шекспира). Но, если мой взгляд использует новую модель, тогда набор форм должен быть пустым. Однако 'formet = AuthorFormset()' также завершает показ формы с деталями Шекспира, а не пустую форму, как я ожидал. – trubliphone