对不起问题标题,我不知道如何简要解释这个问题。
基本上我处于这样的情况:
models.py
class Author(Model):
...
class Book(Model)
author = models.ForeignKey(Author)
views.py
for author in Author.objects.filter(name=""):
author_form = AuthorForm(instance=author) #This is a model form
book_formset = inlineformset_factory(Author, Book, instance=author)
我现在要做的是制作一套作者。每个元素都应包含AuthorForm和相关book_formset的等值。
关于如何做的任何想法??
由于
答案 0 :(得分:1)
This person可能已经完成了你的要求,但我认为这不是你所需要的。
如果我理解正确,你就近了,但应该多次使用工厂(而不是工厂生成器函数)来创建一个列表,其中每个元素都有两个独立的项目:作者表单和带有书籍的内联表单集。关键是你将有两个独立的项目,而不是一个在另一个内部。
每个表单/内联formset都需要一个唯一的前缀来相对于渲染的html / form汤中的其他表单进行标识。
在您看来:
AuthorBooksFormSet = inlineformset_factory(Author, Book)
author_books_list = list()
for author in author_queryset: #with whatever sorting you want in the template
prefix = #some unique string related to the author
author_form = AuthorForm(instance=author,
prefix='author'+prefix)
author_books_formset = AuthorBooksFormSet(instance = author,
prefix = 'books'+prefix)
author_books_list.append((author_form, author_books_formset))
将整个列表发送到您的模板并:
{% for author_form, author_books_formset in author_books_list %}
...something with author_form
...something with author_books_formset
{% endfor %}
如果django在formset中为实例对象提供表单,您甚至可以跳过作者表单。但是我从来没有使用它们,所以我不确定。
我想你已经离开了,因为我通过谷歌搜索找到了这个,但你最终做了什么?