[英]How to label a form instance within a django inline formset?
我認為這是很常見的情況,但似乎無法繞開它。 我已經使用django.forms.inlineformset_factory
創建了一個表單表單集,該表單集允許用戶更改外鍵對象的各個方面,並且這些方面都工作正常。
麻煩的是,我希望能夠在表單集中標記所有這些表單(注意,不是每個表單中的字段,而是每個表單所基於的外鍵模型)。 例如,如果我在docs中調整示例:
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)
我創建了表單集,以允許人們更改Daffy Duck的任何書籍中的頁數:
BookFormSet = inlineformset_factory(Author, Book, fields=('pages',))
author = Author.objects.get(name='Daffy Duck')
formset = BookFormSet(instance=author)
說Daffy寫了五本書,這些書顯示為整數條目,所有標簽都標記為“ Pages”,而沒有提及每個書指向的書。 我如何在表格的標題上加上書名,以便他們知道要更改的內容? 我嘗試過將字典傳遞給inlineformset_factory
函數的labels
字段,但是沒有用。
首先,請注意,內聯表單集是模型表單集的小包裝,因此適用於后者的大部分內容都適用於前者。 模型表單集是一種呈現一組表單的方法,每個表單都與模型實例相關。 因此,您試圖同時考慮多個抽象級別。
接下來,請參閱“ 在視圖和模板中使用表單集 ”的文檔,該文檔描述了編寫自己的模板來呈現表單集:
<form method="post" action="">
{{ formset.management_form }}
<table>
{% for form in formset %}
{{ form }}
{% endfor %}
</table>
</form>
因此,如果要標記每種形式(記住每個形式本身都是描述一個模型實例的ModelForm) ,則可以在{% for %}
塊中訪問該形式:
<form method="post" action="">
{{ formset.management_form }}
<table>
{% for form in formset %}
<tr><th>{{ form.instance.foo_field }}</th></tr>
{{ form }}
{% endfor %}
</table>
</form>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.