我想通過ModelFormSet
顯示多個表單,其中每個表單依次顯示連接到對象的所有對象的InlineFormSets
。如何將InlineFormSet放入Django的ModelFormSet中?
現在我不確定如何爲每個ModelFormSet
提供實例。我想過子類化BaseModelFormSet
,但我不知道從哪裏開始,並且想知道在我解決所有問題之前是否可以做到這一點。
在此先感謝!
我想通過ModelFormSet
顯示多個表單,其中每個表單依次顯示連接到對象的所有對象的InlineFormSets
。如何將InlineFormSet放入Django的ModelFormSet中?
現在我不確定如何爲每個ModelFormSet
提供實例。我想過子類化BaseModelFormSet
,但我不知道從哪裏開始,並且想知道在我解決所有問題之前是否可以做到這一點。
在此先感謝!
我發現了一篇關注確切問題的文章。它工作正常!
http://yergler.net/blog/2009/09/27/nested-formsets-with-django/
爲了完整起見,我複製的代碼片段:
class Block(models.Model):
description = models.CharField(max_length=255)
class Building(models.Model):
block = models.ForeignKey(Block)
address = models.CharField(max_length=255)
class Tenant(models.Model):
building = models.ForeignKey(Building)
name = models.CharField(max_length=255)
unit = models.CharField(max_length=255)
form django.forms.models import inlineformset_factory, BaseInlineFormSet
TenantFormset = inlineformset_factory(models.Building, models.Tenant, extra=1)
class BaseBuildingFormset(BaseInlineFormSet):
def add_fields(self, form, index):
# allow the super class to create the fields as usual
super(BaseBuildingFormset, self).add_fields(form, index)
# created the nested formset
try:
instance = self.get_queryset()[index]
pk_value = instance.pk
except IndexError:
instance=None
pk_value = hash(form.prefix)
# store the formset in the .nested property
form.nested = [
TenantFormset(data=self.data,
instance = instance,
prefix = 'TENANTS_%s' % pk_value)]
BuildingFormset = inlineformset_factory(models.Block, models.Building, formset=BaseBuildingFormset, extra=1)
正如jnns說,你要使用inlineformset_factory
我怎麼可能,如果修改代碼,我的建築別t屬於一個Block模型?即我希望能夠傳遞建築物的初始數據(或建築物的查詢集),然後顯示下面的租戶。期待聽到你的想法。 –
您可以將'modelformset_factory'用於建築物的初始查詢集而不是'inlineformset_factory'。 – jnns
@jnns:我也有同樣的問題,你在Ur問題中解釋,但在你的解決方案中,我沒有看到modelformset的用法,我怎樣才能生成多個表單,其中每個表單顯示相關的內聯表單?這裏是我的問題http://stackoverflow.com/questions/11929355/combine-modelformset-and-inlineformset-in-django-views/11929680#comment15888609_11929680 – Asif