我认为这是一个常见的情况,但可以't seem to get my head around it. I'使用 django.forms.inlineformset_factory
创建一个表单的formset,允许用户改变外键对象的方面,这些工作正常 .
麻烦的是我希望能够在formset中标记这些表单中的每一个(注意,不是每个表单中的字段,而是每个表单所基于的外键模型) . 例如,如果我在文档中调整示例:
from django.db import models
from django.forms import inlineformset_factory
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
author = models.ForeignKey(Author, on_delete=models.CASCADE)
title = models.CharField(max_length=100)
pages = models.IntegerField(default=0)
我创建了我的formset,允许人们改变Daffy Duck在任何书中的页数:
BookFormSet = inlineformset_factory(Author, Book, fields=('pages',))
author = Author.objects.get(name='Daffy Duck')
formset = BookFormSet(instance=author)
说Daffy已经写了五本书,这些书都显示为整数条目,所有条目都标记为"Pages",没有提到每本书指向的书 . 如何使用书名标记表单,以便他们知道哪一个_2980295已经尝试将字典传递给 inlineformset_factory
函数的 labels
字段,但它不起作用 .
1 回答
首先,请注意内联formset是一个围绕模型formset的小包装器,因此适用于后者的大多数适用于前者 . 模型formset是一种呈现一组表单的方法,每个表单都与模型的一个实例相关 . 所以你试图同时考虑几个抽象层次 .
接下来,请参阅“Using a formset in views and templates”的文档,该文档描述了编写自己的模板以呈现formset:
因此,如果您想标记每个表单 - 记住每个表单本身都是ModelForm描述模型的一个实例 - 您可以访问
{% for %}
块中的该表单: