[英]django form twice on same template
我正在創建一個包含大量數據輸入的頁面。 我需要一個可以在一個模板中多次具有相同表單的部分
所以我有一個像這樣的模型:
class base(models.Model):
name = models.CharField(max_length=50)
class other(models.Model):
base = models.ForeignKey(base)
然后在模板中,我需要一次base
,然后(動態)需要多個others
。 截至目前,我正在執行類似這樣的模板
<div id="div_id_name" class="form-group">
<label for="id_name" class="control-label requiredField">
Name
</label>
<div class="controls ">
<input class="numberinput form-control" id="id_name" name="name" type="number" />
</div>
</div>
唯一的問題是,使用多個相同形式的字段時,字段的名稱不是唯一的,因此我不知道每個單獨的字段如何相同。 有什么幫助嗎?
如果您需要以相同的形式獲得已知的次數,則可以通過在創建時將其傳遞給prefix='something'
來添加前綴。 該前綴將附加到生成的字段名稱之前。
但對於您而言,您真正擁有的是一組表格。 可能用於編輯相似對象的集合。 Django為此提供了modelformset_factory
函數,您可以通過以下方式使用它:
from django.forms import modelformset_factory
OtherFormSet = modelformset_factory(Other)
# Creating an empty formset
formset = OtherFormSet()
# Creating a formset from a queryset
formset = OtherFormSet(queryset=Other.objects.filter(something='foobar'))
# Validating and saving
formset = OtherFormSet(request.POST)
if formset.is_valid():
formset.save()
請參閱此處的完整文檔: https : //docs.djangoproject.com/en/dev/topics/forms/modelforms/#model-formsets
現在,從您的問題中,我相信您實際上是在編輯一個Base實例,以及鏈接到該Base實例的一組Other實例,對嗎? 這是一個很常見的情況,Django使用內聯表單集為其提供直接支持。
from django.forms import inlineformset_factory
InlineOtherFormSet = inlineformset_factory(Base, Other)
formset = InlineOtherFormSet(instance=Base.objects.get(pk=1))
同樣,該文檔非常清晰,因此,更多內容,我將讓您閱讀: https : //docs.djangoproject.com/en/dev/topics/forms/modelforms/#inline-formsets
您可以通過執行以下操作為表單添加前綴:
mother = PersonForm(prefix="mother")
father = PersonForm(prefix="father")
希望這可以為您提供進一步的幫助!
來源: https : //docs.djangoproject.com/en/dev/ref/forms/api/#prefixes-for-forms
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.